美文网首页
求树的深度

求树的深度

作者: 狗尾巴草败了 | 来源:发表于2017-09-12 17:16 被阅读0次

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;
}

相关文章

网友评论

      本文标题:求树的深度

      本文链接:https://www.haomeiwen.com/subject/ecacsxtx.html