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 }
  • 相关阅读:
    CodeForces
    处女座的测验(一)(素数筛+思维)
    Codeforces-D-Diverse Garland(思维)
    linux中open函数使用
    linux管道通信
    linux中memset的正确用法
    在linux中read、write函数
    Ubuntu+Win7+Samba实现文件共享
    【转】教你如何实现linux和W…
    《转》我的ARM学习经历
  • 原文地址:https://www.cnblogs.com/k330/p/Cpp_NonRecursive_BinTree_PostOrderTraversal.html
Copyright © 2011-2022 走看看