struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {}
};
求二叉树的深度,有两种方法,可以采用递归方式,也可以采用非递归方式。
递归方式
int TreeDepth(TreeNode *root) {
if(root == NULL)
return 0;
int leftdepth = TreeDepth(root->left);
int rightdepth = TreeDepth(root->right);
return (leftdepth > rightdepth ? leftdepth : rightdepth) + 1;
}
非递归方式
int TreeDepth(TreeNode *root) {
if(root == NULL)
return 0;
int depth = 0;
deque<TreeNode*> q;
q.push_back(root);
while(!q.empty()){
int len = q.size();
++depth;
while(len--){
TreeNode* temp = q.front();
q.pop_front();
if(temp->left != NULL)
q.push_back(temp->left);
if(temp->right != NULL)
q.push_back(temp->right);
}
}
return depth;
}