二叉树遍历 编译没有错误但是运行不出来结果 请问问题出在哪里

论坛 期权论坛 期权     
木缚微   2018-4-28 02:12   3612   1
#include
#include
using namespace std;

struct node{
    char data;
    node *lchild;
    node *rchild;
};


void creattree(node *T){
    char c;
    cin>>c;

    if(c=='#'){
        T=NULL;
    }
    ...#include
#include
using namespace std;

struct node{
    char data;
    node *lchild;
    node *rchild;
};

void creattree(node *T){
    char c;
    cin>>c;

    if(c=='#'){
        T=NULL;
    }
    else{
        T=new node;
        T->data=c;
        creattree(T->lchild);
        creattree(T->rchild);
    }
}

void preTraverse(node *T)
{
    if(T)
    {
        cout
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
热心网友  15级至尊 | 2018-4-30 01:13:02 发帖IP地址来自
我有很多个(假设10万个)数据要保存起来,以后还需要从保存的这些数据中检索是否存在某
个数据,(我想说出二叉树的好处,该怎么说呢?那就是说别人的缺点),假如存在数组中,
那么,碰巧要找的数字位于99999那个地方,那查找的速度将很慢,因为要从第1个依次往
后取,取出来后进行比较。平衡二叉树(构建平衡二叉树需要先排序,我们这里就不作考虑
了)可以很好地解决这个问题,但二叉树的遍历(前序,中序,后序)效率要比数组低很多,
public class Node {
public int value;
public Node left;
public Node right;
public void store(intvalue)
right.value=value;
}
else
{
right.store(value);
}
}
}
public boolean find(intvalue)
{
System.out.println("happen" +this.value);
if(value ==this.value)
{
return true;
}
else if(value>this.value)
{
if(right ==null)returnfalse;
return right.find(value);
}else
{
if(left ==null)returnfalse;
return left.find(value);
}
}
public void preList()
{
System.out.print(this.value+ ",");
if(left!=null)left.preList();
if(right!=null) right.preList();
}
public void middleList()
{
if(left!=null)left.preList();
System.out.print(this.value+ ",");
if(right!=null)right.preList();
}
public void afterList()
{
if(left!=null)left.preList();
if(right!=null)right.preList();
System.out.print(this.value+ ",");
}
public static voidmain(String [] args)
{
int [] data =new int[20];
for(inti=0;i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP