
二叉树遍历问题
一个二叉树,节点由左child与右child和parent组成,如何在线性时间内,只使用固定空间(注意是固定,不能和节点数有关),不能修改树(哪怕是暂时的)对各个节点进行...
一个二叉树,节点由左child 与右child 和 parent 组成,如何在线性时间内,只使用固定空间(注意是固定,不能和节点数有关),不能修改树(哪怕是暂时的)对各个节点进行遍历。求高手解答,只要一个思想就行了,编码我自己来。
展开
3个回答
展开全部
对于二叉链式存储的二叉树,各种遍历方式都至少得用到栈(包括递归)或者队列结构吧……
于是乎O(1)的空间有可能吗?求原题详细描述并坐等高手……
于是乎O(1)的空间有可能吗?求原题详细描述并坐等高手……
更多追问追答
追问
详见 《算法导论(第二版)》 10.4-4
追答
那题好像没写要求固定空间……而且题目说的是多叉树的二叉存储……
该怎么遍历二叉树还怎么遍历吧。基本上怎么做都可以达到O(n)的时间复杂度。
2011-07-24
展开全部
blic class BinaryTreeTest{
public static void main(String args[]){
BinaryTreeTest b=new BinaryTreeTest();
int data[]={12,11,34,45,67,89,56,43,22,98};
BinaryTree root =new BinaryTree(data[0]);
System.out.print("二叉树的中的数据: ");
for(int i=1;i data.length 1;i )
{
root.insertTree(root,data[i-1]);
System.out.print(data[i-1] ";");
}
System.out.println(data[data.length-1]);
int key=Integer.parseInt(args[0]);
if(b.searchkey(root,key))
{
System.out.println("找到了:" key);
}
else
{
System.out.println("没有找到:" key);
}
}
public boolean searchkey(BinaryTree root, int key)
{
boolean bl = false;
if (root == null)
{
bl = false;
return bl;
}
else if (root.data == key)
{
bl = true;
return bl;
}
else if (key
public static void main(String args[]){
BinaryTreeTest b=new BinaryTreeTest();
int data[]={12,11,34,45,67,89,56,43,22,98};
BinaryTree root =new BinaryTree(data[0]);
System.out.print("二叉树的中的数据: ");
for(int i=1;i data.length 1;i )
{
root.insertTree(root,data[i-1]);
System.out.print(data[i-1] ";");
}
System.out.println(data[data.length-1]);
int key=Integer.parseInt(args[0]);
if(b.searchkey(root,key))
{
System.out.println("找到了:" key);
}
else
{
System.out.println("没有找到:" key);
}
}
public boolean searchkey(BinaryTree root, int key)
{
boolean bl = false;
if (root == null)
{
bl = false;
return bl;
}
else if (root.data == key)
{
bl = true;
return bl;
}
else if (key
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-24
展开全部
*
**由前序,和中序创建二叉树,
**由已知的二叉树,得到他的后序
**/
#includestdio.h
**由前序,和中序创建二叉树,
**由已知的二叉树,得到他的后序
**/
#includestdio.h
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询