| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 882 人关注过本帖
标题:关于二叉树遍历问题
只看楼主 加入收藏
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:2 
关于二叉树遍历问题
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{
    char data;
    struct aa *Lchild;
    struct aa *Rchild;
}*BiTree,Bitaa;
void GreatBiTree(BiTree &T)
{//创建一棵二叉树
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        T=NULL;
    else
        {
            T=(BiTree)malloc(sizeof(Bitaa));
            T->data=ch;
            GreatBiTree(T->Lchild);
            GreatBiTree(T->Rchild);
        }
}
void Visit(BiTree &T)
{
    if(T->data!='#')
        printf("%c",T->data);
}
void Preorder(BiTree &T)
{//先序遍历
    if(T!=NULL)
    {
        Visit(T);
        Preorder(T->Lchild);
        Preorder(T->Rchild);
    }
}
void Inorder(BiTree &T)
{//中序遍历
    if(T)
    {
        Inorder(T->Lchild);
        Visit(T);
        Inorder(T->Rchild);
    }
}
void Postorder(BiTree &T)
{//后序遍历
    if(T)
    {
        Postorder(T->Lchild);
        Postorder(T->Rchild);
        Visit(T);
    }
}
int PostBitreeDepth(BiTree &T)
{//后序遍历求二叉树的高度
    int hl,hr,max;
    if(T)
    {
        hl=PostBitreeDepth(T->Lchild);
        hr=PostBitreeDepth(T->Rchild);
        if(hl>=hr)
            max=hl;
        else
            max=hr;
        return max+1;
    }
    else
        return 0;
}
int main()
{
    BiTree H;
    int h;
    GreatBiTree(H);
    printf("先序遍历:\n");
    Preorder(H);
    printf("\n");
    printf("中序遍历:\n");
    Inorder(H);
    printf("\n");
    printf("后序遍历:\n");
    Postorder(H);
    printf("\n");
    printf("此二叉树的高度是:\n");
    h=PostBitreeDepth(H);
    printf("%d\n",h);
    return 0;
}
这个程序运行没有错误,但是我有个疑惑,就是我在建立一些函数时,传进去的都是指针的地址,让我在主函数中调用这些函数时,传进去又是指针,但是如果我都加一个取地址符号,就会报错,为什么?求大神指导
搜索更多相关主题的帖子: include 二叉树 
2016-11-07 13:12
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
->前面的是地址,但->后面跟的是不是地址,要好好斟酌一下

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-07 14:16
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:5 
我讲一句不是很重要的话。楼主使用的“引用”这个概念貌似是C++才有的。传统的C并不支持“引用”。

void GreatBiTree(BiTree &T)
看你提的问题我猜你可能还不知道这里的&就是“引用”。


φ(゜▽゜*)♪
2016-11-07 16:08
快速回复:关于二叉树遍历问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032709 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved