| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖, 1 人收藏
标题:求助!!!求二叉树某一节点的双亲的程序怎么改啊?
只看楼主 加入收藏
金鑫1
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-24
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:1 
求助!!!求二叉树某一节点的双亲的程序怎么改啊?
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct Node
{
    DataType data;
    struct Node * Lchild;
    struct Node * Rchild;
}BiTNode,*BiTree;
BiTNode *CreateBiTree()
{
    BiTree s;
    char ch;
    ch=getchar();
    if(ch=='#')
        return NULL;
    else
    {   s=(BiTNode *)malloc(sizeof(BiTNode));
   
        s->data=ch;
        
        s->Lchild=CreateBiTree();
        s->Rchild=CreateBiTree();
        return s;
    }
}
void Visit(BiTree root)
{
    if(root)
        printf("%c",root->data);
}
void PreOrder(BiTree root)//先序
{
    if(root)
    {
        Visit(root);
        PreOrder(root->Lchild);
        PreOrder(root->Rchild);
    }
}
void InOrder(BiTree root)//中序
{
    if(root)
    {
        InOrder(root->Lchild);
        Visit(root);
        InOrder(root->Rchild);
    }
}
void PostOrder(BiTree root)//后序
{
    if(root)
    {
        PostOrder(root->Lchild);
        PostOrder(root->Rchild);
        Visit(root);
    }
}
void PreOrderroot(BiTree root)//输出二叉树中结点
{

    if(root)
    {   
      
        PreOrderroot(root->Lchild);
        PreOrderroot(root->Rchild);
      
            printf("%c",root->data);
}}
int preorderroot(BiTree root)//统计二叉树节点数
{      int count,a1,a2;
       if(root==NULL)
       count=0;
else if((root->Lchild==NULL)||(root->Rchild==NULL))
        count=2;
else
{      
        a1=preorderroot(root->Lchild);a1++;
        a2=preorderroot(root->Rchild);a2++;
        count=a1+a2;
}
return count;
}
void InOrderroot(BiTree root)//输出二叉树叶子结点
{
    if(root)
    {
        InOrderroot(root->Lchild);
        if(root->Lchild==NULL && root->Rchild==NULL)
            printf("%c",root->data);
        InOrderroot(root->Rchild);
    }
}
int leaf(BiTree root)//统计叶子结点数
{
    int count1,n1,n2;
    if(root==NULL)
        count1=0;
    else if((root->Lchild==NULL)&&(root->Rchild==NULL))
        count1=1;
    else
    {
        n1=leaf(root->Lchild);
        n2=leaf(root->Rchild);
        count1=n1+n2;
    }
    return count1;
}
int PostTreeDepth(BiTree root)//求二叉树的高度
{
    int h1,h2,h;
    if(root)
    {
        h1=PostTreeDepth(root->Lchild);
        h2=PostTreeDepth(root->Rchild);
        h=(h1>h2?h1:h2)+1;
        return h;
    }
    else
        return 0;
}
BiTree Parent(BiTree root,BiTree x)//求结点的双亲
{
    BiTree p,q;
    if(root==NULL)
        return NULL;
    if((root->Lchild&&root->Lchild==x)||(root->Rchild&&root->Rchild==x))
        printf("%c",root->data);   
        return root;

}
void PrintTree(BiTree root,int h)
{
    if(root==NULL)
        return;
    PrintTree(root->Rchild,h+1);
    for(int i=0;i<h;i++)
        printf("    ");
    printf("%3c\n",root->data);
    PrintTree(root->Lchild,h+1);
}
void main()
{
    BiTree root;
    BiTree s,o,x,p;
    int h,count1,t;
    printf("按先序输入二叉树:\n");
    s=CreateBiTree();
    root=s;
    printf("按先序输出:");
       PreOrder(root);
    printf("\n");
    printf("按中序输出:");
    InOrder(root);
    printf("\n");
    printf("按后序输出:");
    PostOrder(root);
    printf("\n");
    printf("输出二叉树中的节点:");
    PreOrderroot(root);
    printf("\n");
    printf("输出二叉树中的节点数:");
    t=preorderroot(root);
    printf("%d\n",t);
    printf("输出二叉树中叶子结点:");
    InOrderroot(root);
    printf("\n");
    printf("输出叶子结点数:");
    count1=leaf(root);
    printf("%d\n",count1);
    printf("二叉树的高度:");
    h=PostTreeDepth(root);
    printf("%d\n",h);
    printf("打印:\n");
    PrintTree(root,h);
    printf("输入要求双亲的节点:");
    BiTree Parent(BiTree root,BiTree x);
    printf("\n");
}
搜索更多相关主题的帖子: include return 二叉树 
2013-10-24 14:17
Osiris9
Rank: 4
来 自:九柱
等 级:业余侠客
帖 子:28
专家分:225
注 册:2013-10-25
收藏
得分:20 
找到child就返回parent

干旱时死去................丰水时重生!
2013-10-26 01:18
快速回复:求助!!!求二叉树某一节点的双亲的程序怎么改啊?
数据加载中...
 
   



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

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