int Dep(Bianary* root){
if(root == NULL) return 0;
int a = Dep(root->left);
int b = Dep(root->right);
return a>b?a+1:b+1;
}
强烈推荐大家动手写一下过程,加深理解。当然上述情况是用求高度的手段求深度,后续遍历,简单理解的方式是前序遍历,贴个代码:
class solution {
public:
int result;
void getdepth(treenode* node, int depth) {
result = depth > result ? depth : result; // 中
if (node->left == NULL && node->right == NULL) return ;
if (node->left) { // 左
depth++; // 深度+1
getdepth(node->left, depth);
depth--; // 回溯,深度-1
}
if (node->right) { // 右
depth++; // 深度+1
getdepth(node->right, depth);
depth--; // 回溯,深度-1
}
return ;
}
int maxdepth(treenode* root) {
result = 0;
if (root == NULL) return result;
getdepth(root, 1);
return result;
}
};