二叉树的非递归遍历
来源:互联网 发布:网络课程app 编辑:程序博客网 时间:2024/06/07 22:57
二叉树的非递归遍历,这个实现的是先根遍历
// Traverse-Tree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream> #include<vector> using namespace std;struct BiNOde{int ele;BiNOde* lnode;BiNOde* rnode;};BiNOde*create_tree(){BiNOde * root = new BiNOde;BiNOde*node1 = new BiNOde;BiNOde*node2 = new BiNOde;BiNOde*node3 = new BiNOde;BiNOde*node4 = new BiNOde;BiNOde*node5 = new BiNOde;BiNOde*node6 = new BiNOde;BiNOde*node7 = new BiNOde;BiNOde*node8 = new BiNOde;BiNOde*node9 = new BiNOde;BiNOde*node10 = new BiNOde;BiNOde*node11 = new BiNOde;root->ele = 0;node1->ele = 1;node2->ele = 2;node3->ele = 3;node4->ele = 4;node5->ele = 5;node6->ele = 6;node7->ele = 7;node8->ele = 8;node9->ele = 9;node10->ele = 10;node11->ele = 11;root->lnode = node1;root->rnode = node2;node1->lnode = node3;node1->rnode = node4;node2->lnode = node7;node2->rnode = node8;node3->lnode = node5;node3->rnode = node11;node4->lnode = node10;node4->rnode = NULL;node5->lnode = node6;node5->rnode = NULL;node6->lnode = NULL;node6->rnode = NULL;node7->lnode = node9;node7->rnode = NULL;node8->lnode = NULL;node8->rnode = NULL;node9->lnode = NULL;node9->rnode = NULL;node10->lnode = NULL;node10->rnode = NULL;node11->lnode = NULL;node11->rnode = NULL;//BiNOde*node12 = new BiNOde; //node12->ele = 12; //node12->lnode = NULL; //node12->rnode = NULL; //node6->lnode = node11; return root;}vector<BiNOde*>expand(BiNOde*node){cout << node->ele << endl;vector<BiNOde*>aaa;while (node != NULL){if (node->lnode!=NULL)cout << node->lnode->ele << endl;if (node->rnode != NULL)aaa.push_back(node->rnode);node = node->lnode;}return aaa;}void Traverse(BiNOde*root){vector<vector<BiNOde*>>aa;if (root == NULL)return;vector<BiNOde*>aaa = expand(root);if (aaa.empty())return;aa.push_back(aaa);while (!aa.empty()){while (aa.back().empty()){aa.pop_back();if (aa.empty())return;}BiNOde*n = aa.back().back();aa.back().pop_back();aaa = expand(n);if (!aaa.empty()){aa.push_back(aaa);}}}int _tmain(int argc, _TCHAR* argv[]){BiNOde*root = create_tree();Traverse(root);system("pause");return 0;}
0 0
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的创建,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的非递归遍历以及递归遍历
- 二叉树的非递归遍历&递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的构造,递归遍历,非递归遍历
- 二叉树的遍历(递归+非递归+层次遍历)
- 二叉树的递归遍历与非递归遍历
- (3.1.2.1)getParameter()和getAttribute()
- Web开发中需要注意的安全问题
- Active Perl的PPM的repository添加
- 使用Maven搭建Hadoop开发环境
- ubuntu 配置 jdk 环境
- 二叉树的非递归遍历
- 解决Android Studio的Rendering Problems之没有可视化编辑窗口
- CSU1207(Strictly-increasing sequence)
- C语言中的内存对齐
- 将ajax返回的json数据转化为json对象
- 【HDU】5421 Victor and String【回文树扩展——可左右添加字符的回文树】
- leetcode: (7) Reverse Integer
- echo print() print_r() var_dump()的区别
- leetCode 115.Distinct Subsequences(子序列距离) 解题思路和方法