題目描述:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
輸入:第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。 n <= 10。
接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a為-1時,沒有左孩子。當b為-1時,沒有右孩子。
輸出:輸出乙個整型,表示樹的深度。
樣例輸入:
32 3-1 -1-1 -1
樣例輸出:
2
#include #include #include #include #include using namespace std;
#define max(a,b) ((a)>(b)?(a):(b))
typedef struct _binode
binode;
queue que;
binode* buildbitree(int len)
que.push(root);
for (i = 1; i <= len; ++i)
else
if (b != -1)
else
}return root;
}void destroybitree(binode **root)
if ((*root)->rchild)
delete *root;
*root = null;
}}int calculatebitreedepth(binode *root)
else
return max(calculatebitreedepth(root->lchild),calculatebitreedepth(root->rchild))+1;
}int main()
{ int n, i, j;
binode *proot;
char input[100];
while(cin>>n)
{proot = buildbitree(n);
cout<
輸入一棵二叉樹,求該樹的深度
題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。輸入 第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。n 10。接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a...
求一棵二叉樹的映象
求一棵二叉樹的映象 二叉樹的映象就是將二叉樹的左右子樹都交換位置得到的一棵二叉樹。所以我們可以通過遞迴來解決。下邊給出 實現 void mirror node root 下邊給出完整的測試 pragma once includeusing namespace std include includet...
翻轉一棵二叉樹
問題描述 翻轉一棵二叉樹 示例 輸入 4 2 7 1 3 6 9輸出 4 7 2 9 6 3 1 解法 1.用遞迴來解決 2.首先判斷根是不是空 遞迴出口 3.如果不是空則交換左右子數 4.對左子樹進行遞迴 5.對右子樹進行遞迴 definition for a binary tree node.c...