微软等数据结构+算法面试100题(41)-- 二叉树的前序遍历
来源:互联网 发布:商品分类页面设计源码 编辑:程序博客网 时间:2024/06/11 06:59
二叉树的前序遍历
/*43.递归和非递归俩种方法实现二叉树的前序遍历。*/void PreOrderTraverse(TreeNode *root){if(root==NULL)return;cout<<root->data<<" ";PreOrderTraverse(root->left);PreOrderTraverse(root->right);}/*树的前序遍历属于深度优先搜索。层序遍历属于广度优先搜索。深度优先要用到栈,广度优先要用到队列。广度优先已经在前面写过了。前序遍历是先遍历root的节点。然后遍历左子树,左子树遍历完再遍历右子树。例如:10 / \ 6 14 / \ / \4 8 12 16这样一棵树。遍历的时候由于是先遍历根节点再遍历左子树。所以只要root不为空的时候,我们就向左走。例如先遍历10,10遍历完,遍历10的左子树,遍历6,6遍历完遍历6的左子树4.继续遍历4的左子树时为空了。这是要转回去遍历6的右子树。所以这里就要用到栈了。我们在遍历的时候,将遍历了的节点存入栈中。方便回头遍历。*/void PreOrderTraverseNoRecursion(TreeNode *root,stack<TreeNode*> &st){//只有当栈为空和节点为空的时候遍历结束。while(root!=NULL||!st.empty()){if(root!=NULL)//如果节点不为空的时候,访问这个节点。将节点压栈。然后再遍历这个节点的左子树{cout<<root->data<<" ";st.push(root);root=root->left;}else//如果节点为空了。那么找到上一个访问的节点。开始访问右子树。{root=st.top();root=root->right;st.pop();}}cout<<endl;}void PreOrderTraverseNoRecursion(TreeNode *root){stack<TreeNode*> st;PreOrderTraverseNoRecursion(root,st);}void PreOrderTraverseNoRecursionTest(){TreeNode* root=NULL;cout<<"make tree"<<endl;MakeTree(root);cout<<"the tree : ";LevelOrderTraverse(root);cout<<"the tree : "<<endl;LevelOrderTraverse1(root);cout<<"the tree : ";PreOrderTraverseNoRecursion(root);}
- 微软等数据结构+算法面试100题(41)-- 二叉树的前序遍历
- 微软等数据结构+算法面试100题(35)-- 二叉树的深度
- 微软等数据结构+算法面试100题(20)--二叉树公共父节点
- 微软等数据结构+算法面试100题(21)--二叉树打印到叶子节点的所有路径
- 微软等数据结构+算法面试100题(36)-- 打印二叉树中某一层的节点
- 微软等数据结构+算法面试100题(38)-- 二叉树中任意两个节点间的最大距离
- 微软等数据结构+算法面试100题
- 微软等数据结构+算法面试 100 题
- 微软等数据结构+算法面试100题
- 程序员面试100题(算法)之层次遍历二叉树(含二叉树前序创建、层次遍历、前序遍历)
- [答案V0.1版]精选微软等数据结构+算法面试100题 [前20题]
- [答案V0.1版]精选微软等数据结构+算法面试100题 [前20题]
- 微软等公司数据结构+算法面试100题--树
- 微软等数据结构+算法面试100题(19)--链表
- 微软100题(43)二叉树的前序遍历
- 微软等数据结构+算法面试100题(1)--用到的数据结构和函数
- 微软面试100题系列---二叉树的层次遍历
- 【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法
- android Notification 的使用!!!
- 机房收费系统———总结
- Android.mk文件分析
- flex调用.bat文件
- 第25贴:三极管 运放增益
- 微软等数据结构+算法面试100题(41)-- 二叉树的前序遍历
- 关于pragma pack的用法(四) C++中的内存对齐问题
- 微软等数据结构+算法面试100题(42)-- 设计一个栈结构
- lightbox和jquery库图片弹出层冲突解决
- Java的动态绑定机制
- 微软等数据结构+算法面试100题(43)-- 把二元查找树转变成排序的双向链表
- 使用批处理添加受信任站点和设置ie安全级别
- android run as 出现 .. 的各种问题
- iphone开发 音频播放