您的位置:首页 > 其它

[树]输出二叉树的节点层数

2016-01-11 02:19 363 查看
给出一个二叉树先序遍历序列(没有孩子用空格表示)

先序遍历输出各节点的所在层数

#include<stdio.h>
#include<stdlib.h>

typedef struct BinTNode
{
char data;
struct BinTNode *lchild, *rchild;
}BinTNode, *BinTree;

void CreatBinTree(BinTree *T);
void PreOrderTraverse(BinTree T, int level);

int main()
{
BinTree T = NULL;
int level = 1;
CreatBinTree(&T);
PreOrderTraverse(T, level);
return 0;
}

void CreatBinTree(BinTree *T) //递归建立二叉树 , 约定前序输入
{
char c;
scanf("%c", &c);
if(c == ' ')
(*T) = NULL;
else
{
*T = (BinTNode *)malloc(sizeof(BinTNode));
(*T) -> data = c;
CreatBinTree(&(*T) -> lchild);
CreatBinTree(&(*T) -> rchild);
}
}

void PreOrderTraverse(BinTree T, int level)
{
if(T)
{
printf("节点 %c 位于第 %d 层\n", T -> data, level);
PreOrderTraverse(T -> lchild, level+1);
PreOrderTraverse(T -> rchild, level+1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: