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 }
  • 相关阅读:
    Python Web学习笔记之Python多线程基础
    Python入门之python可变对象与不可变对象
    Python Web学习笔记之SOCK_STREAM和SOCK_DGRAM
    background和background-position相关笔记
    自定义switch开关
    获取浏览器类型和版本号
    随机生成字符串
    white-space详解
    文件选择按钮随笔
    mouse的各种事件
  • 原文地址:https://www.cnblogs.com/k330/p/Cpp_NonRecursive_BinTree_PostOrderTraversal.html
Copyright © 2011-2022 走看看