zoukankan      html  css  js  c++  java
  • [存档] 非递归后根遍历二叉树


     1 void NonRecursive_PostOrderTraversal(TreeNode *root){
     2     if(!root){
     3         cout<<"Empty tree"<<'\n';
     4         return;
     5     }
     6     stack<TreeNode *> s;
     7     TreeNode *cur = root;
     8     TreeNode *prev = root;
     9     s.push(root);
    10     while(!s.empty()){
    11         if(cur->Left && prev != cur->Left && prev != cur->Right){
    12                 s.push(cur->Left); 
    13                 prev = cur; 
    14                 cur = cur->Left;
    15                 continue//如果有左子树且从未访问过,先访问左子树
    16         }
    17         if(cur->Right && prev !=cur->Right){
    18             s.push(cur->Right); 
    19             prev = cur; 
    20             cur = cur->Right;
    21         }else{
    22             cout<<cur->Value<<"";
    23             prev = cur; 
    24             s.pop(); 
    25             if(!s.empty()){
    26                 cur = s.top(); 
    27             }
    28         }
    29     }
    30     cout<<"end"<<'\n';
    31 }
  • 相关阅读:
    <Error>: CGContextRestoreGState
    Google 常用镜像收集
    NSCharacterSet 详解
    JAVA并发,CyclicBarrier
    JAVA并发,CountDownLatch使用
    JAVA并发,经典死锁案例-哲学家就餐
    Git-常用命令集合
    (转)《JAVA与模式》之模板方法模式
    JAVA并发,同步锁性能测试
    《转》JAVA并发编程:volatile关键字解析
  • 原文地址:https://www.cnblogs.com/k330/p/Cpp_NonRecursive_BinTree_PostOrderTraversal.html
Copyright © 2011-2022 走看看