#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int value;
struct node *left;
struct node *right;
}node,*pnode;
void create_tree(pnode *root)//按照前序遍历的顺序输入
{
int value;
scanf("%d",&value);//输入值是要保证每个结点都有两个子结点,如果没有子结点则用-1表示
if(value == -1)
*root = NULL;
else
{
*root = (pnode)malloc(sizeof(node));
(*root)->value = value;
create_tree(&(*root)->left);
create_tree(&(*root)->right);
}
}
void print_tree(pnode root)
{
if(root==NULL)
return;
printf("%d\t",root->value);
print_tree(root->left);
print_tree(root->right);
}
int tree_depth(pnode root)
{
if(root==NULL)
return 0;
int left_depth = tree_depth(root->left);
int right_depth = tree_depth(root->right);
return (left_depth > right_depth)?(left_depth+1):(right_depth+1);
}
int main()
{
pnode root;
int depth;
printf("请输入二叉树的结点值:\n");
create_tree(&root);
printf("所创建二叉树的前序遍历为:\n");
print_tree(root);
printf("\n");
depth = tree_depth(root);
printf("二叉树的深度为:%d\n",depth);
return 0;
}
二叉树的深度
最新推荐文章于 2013-06-25 11:08:34 发布