求树的深度

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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容