題目描述:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
輸入:第一行輸入有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...
劍指offer38 輸入一棵二叉樹,求該樹的深度
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。深度優先搜尋,每次得到左右子樹當前最大路徑,選擇其中較大者並回溯。int len left right?left 1 right 1 當前最大路徑 1 2 struct treen...