非递归方法实现 二叉树的 DFS(Pre Order), Post Order
来源:互联网 发布:公司开淘宝店要交税吗 编辑:程序博客网 时间:2024/06/17 09:13
Post Order比较难以理解,开辟的lastVisited记录上次访问的点,如果这个点是当前点的右孩子,则打印当前点
#include <iostream>#include <stack>struct node{int data;node* left;node* right;node(int exData){data = exData;left = NULL;right = NULL;}};void dfs(node* root){std::stack<node*> st;node* cur = root;while(cur || !st.empty()){while(cur){st.push(cur);std::cout << cur->data << " ";cur = cur->left;}if(!st.empty()){cur = st.top();cur = cur->right;st.pop();}}};void postOrderTrav(node *root){std::stack<node*> st;node* cur = root;node* lastVisited = NULL;node* p = NULL;while(cur || !st.empty()){while(cur){st.push(cur);cur = cur->left;}p = st.top();if(!p->right || p->right == lastVisited){std::cout << p->data << " ";lastVisited = p;st.pop();}else{cur = p->right;}}};int main(){node* n1 = new node(1);node* n2 = new node(2);node* n3 = new node(3);node* n4 = new node(4);node* n5 = new node(5);node* n6 = new node(6);node* n7 = new node(7);node* n8 = new node(8);node* n9 = new node(9);node* n10 = new node(10);node* n11 = new node(11);node* n12 = new node(12);node* n13 = new node(13);node* n14 = new node(14);node* n15 = new node(15);node* n16 = new node(16);n1->left = n2;n1->right = n3;n2->left = n4;n2->right = n5;n5->left = n6;n5->right = n7;n7->left = n8;n7->right = n9;n9->right = n10;n3->left = n11;n3->right = n14;n11->right = n12;n12->right = n13;n14->left = n15;n14->right = n16;postOrderTrav(n1);return 0;}
- 非递归方法实现 二叉树的 DFS(Pre Order), Post Order
- 二叉树pre-order,post-order,in-order,level-order遍历实现,及衍生问题
- 1119. Pre- and Post-order Traversals (30) 二叉树
- 1119. Pre- and Post-order Traversals (30)[二叉树遍历]
- 树的前序与后序遍历 (Pre-order Post-order Traversal)
- Pre- and Post-order Traversals
- 1119. Pre- and Post-order Traversals (30) (先序+后序,确定二叉树?)
- Pre-order,in-order, post-order of Tree Traversal
- 1119. Pre- and Post-order Traversals
- pat1191119. Pre- and Post-order Traversals
- PAT1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- PAT--1119. Pre- and Post-order Traversals
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- XSLT(13) sort
- tomcat配置文件 关键词解释
- ASP.NET系统开发(一):层层递进之SQLHelper助手类的持续优化
- RCP中菜单Action中执行JXL解析Excel遇到的问题
- C#委托知识总结
- 非递归方法实现 二叉树的 DFS(Pre Order), Post Order
- Hashmap hashset
- ANGO's new ARCH. Android changed first.
- php链式调用
- XSLT(14) Grouping
- 线段树成断更新裸题hdu1698 Just a Hook
- FastReport里面正确调用函数的方法
- ASP.NET中的母版页
- git入门