題目:輸入一棵二元樹的根結點,求該樹的深度。
思路:
如果一棵樹只有一個結點,它的深度爲1。如果根結點只有左子樹而沒有右子樹,那麼樹的深度應該是其左子樹的深度加1;同樣如果根結點只有右子樹而沒有左子樹,那麼樹的深度應該是其右子樹的深度加1。如果既有右子樹又有左子樹呢?那該樹的深度就是其max(左子樹,右子樹深度)+1。
struct BinaryTreeNode {
int value;
BinaryTreeNode *left;
BinaryTreeNode *right;
}
int getDepth(BinaryTreeNode *root){
if(root == NULL)
return 0;
int leftDepth = getDepth(root->left);
int rightDepth = getDepth(root->right);
return leftDepth > rightDepth?leftDepth + 1:rightDepth + 1;
}