您的位置:首页 > 其它

二叉树的建立以及三种遍历方式

2014-12-31 22:26 253 查看
对于已知两个遍历,重建二叉树,我表示我已经跪了。。。bug还没调好。加油吧

今天仅在晚上看了一会书,所以没有太多的记录。

抽了一段时间写了二叉树的代码,对于基本的知识还是理解的。接下来的工作主要是用非递归方式实现二叉树的三种遍历。

#include<iostream>
using namespace std;
const int N=16;
int a
={1,2,3,0,4,0,5,0,0,6,0};
struct tree
{
int data;
tree *left;
tree *right;
}node
;

void CreateTree()
{
for(int i=0;i<N;i++)
node[i].data=a[i];
for(int i=0;i<N;i++)
{
if(node[i].data)
{
if(2*i+1<N&&node[2*i+1].data)
node[i].left=&node[2*i+1];
else
node[i].left=NULL;
if(2*i+2<N&&node[2*i+2].data)
node[i].right=&node[2*i+2];
else
node[i].right=NULL;
}
}
}
void VisitTree(tree *T)//可以调整前序遍历、中序遍历、后序遍历
//算法复杂度为O(n),递归工作栈的深恰好为树的高度。
{
if(T!=NULL)
{
VisitTree(T->left);
VisitTree(T->right);
cout<<T->data<<'/';
}
}
int main()
{
CreateTree();
VisitTree(&node[0]);
getchar();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐