zoukankan      html  css  js  c++  java
  • 二叉树递归非递归前中后

    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
  • 相关阅读:
    k8s令牌登录设置方法
    etcd查看集群信息
    go Map
    go 切片重组
    go For-range结构
    go 切片
    go 数组与切片
    go 内存优化
    go 格式化输出
    go 闭包函数
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3611186.html
Copyright © 2011-2022 走看看