求樹的深度

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;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容