给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。
最多有 10^6106 个结点。
输入格式无
输出格式无
输入输出样例输入 #1复制
7 2 7 3 6 4 5 0 0 0 0 0 0 0 0
输出 #1复制
4解题思路
二叉树深度就是从根结点到叶结点最多的层数,直接分别遍历左结点,和右结点,找出最大层数就行了
代码展示#includeint n,sum; struct node { int l;//左 int r;//右 } tree[1000000]; int max(int x,int y) { if(x>y)return x; return y; } void fun(int i,int d) { if(i>0) { fun(tree[i].l,d+1); fun(tree[i].r,d+1); sum=max(sum,d); } } int main() { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d %d",&tree[i].l,&tree[i].r); fun(1,1); printf("%dn",sum); return 0; }



