}voidbfs(introot) { queue<int>q; q.push(root); printf("%d",root);intfirst=1;while(!q.empty()) {intu=q.front();q.pop();if(first)first=0;elseprintf("%d",u);if(ri[u]!=0)q.push(ri[u]);if(le[u]!=0)q.push(le[u]); } }intmain() { scanf("%d",&n);for(inti=1...
}introot=pre[pos++]; tree[n].w=root;//当前节点存储的值tree[n].l=2*n;//这个节点的左儿子节点编号tree[n].r=2*n+1;//这个节点的右儿子节点编号intmid=find(in+1,in+r,root)-in;//得到当前节点在中序遍历数组中的下标build(l,mid,2*n);//重建左子树build(mid+1,r,2*n+1);//重建右...
7-11 玩转二叉树 (25分) #include<iostream>#include<cstdio>#include<vector>#include<algorithm>#include<cstring>#include<string>#include#include<set>#include<queue>#include<iomanip>#include<stack>usingnamespacestd;#defineSTDIN freopen("in.in", "r", stdin);freopen("out.out", "w", stdout);c...
输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例: 代码语言:javascript 复制 712345674132657 输出样例:...
2、求树的深度? 首先咱们要明白,树的高度=左右两子树最大高度+1。 极端情况? 如果上送的是null,那么直接返回0; 返回值为int?树的最大高度? 计算高度,我们要访问左子树,求左子树的最大高度;在访问右子树,求右子树的最大高度,最后将最大高度+1。后序遍历。左子树也是一棵树,右子树也是一棵树。