• 二叉树递归非递归前中后


    preorder(node)
      if node == null then return
      visit(node)
      preorder(node.left) 
      preorder(node.right)
    
    iterativePreorder(node)
      parentStack = empty stack
      parentStack.push(null)
      top =  node 
      while ( top != null )
          visit( top )
          if ( top.right != null ) 
              parentStack.push(top.right)
          if ( top.left != null ) 
              parentStack.push(top.left)
          top = parentStack.top();
          parentStack.pop();
    

    In-order[edit]

    inorder(node)
      if node == null then return
      inorder(node.left)
      visit(node)
      inorder(node.right)
    
    iterativeInorder(node)
      parentStack = empty stack
      while (not parentStack.isEmpty() or node ≠ null)
        if (node ≠ null)
          parentStack.push(node)
          node = node.left
        else
          node = parentStack.pop()
          visit(node)
          node = node.right
    

    Post-order[edit]

    postorder(node)
      if node == null then return
      postorder(node.left)
      postorder(node.right)
      visit(node)
    
    iterativePostorder(node)
      parentStack = empty stack  
      lastnodevisited = null 
      while (not parentStack.isEmpty() or node ≠ null)
        if (node ≠ null)
          parentStack.push(node)
          node = node.left
        else
          peeknode = parentStack.peek()
          if (peeknode.right ≠ null and lastnodevisited ≠ peeknode.right) 
            /* if right child exists AND traversing node from left child, move right */
            node = peeknode.right
          else
            parentStack.pop() 
            visit(peeknode)
            lastnodevisited = peeknode
  • 相关阅读:
    xml
    企业级应用和互联网应用的区别
    javaee学习目标
    数据库基本原理
    数据库学习感想
    数据库设计
    团队项目自我评价
    团队项目-软件度量
    团队项目-初级版本
    团队项目—详细设计
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3611186.html
Copyright © 2020-2023  润新知