JZ55 二叉树的深度

暴搜:两种个思路:DFS和BFS

DFS:

里面有个容易误会的地方:每次迭代+1,不是针对子叶来说的,而是针对当前点来说的,由于遍历是自底向上的,因此当前遍历到的点对于已经遍历到的点来说就是根,因此深度+1.

class Solution {
public:
    int TreeDepth(TreeNode* pRoot) {
        if(pRoot == nullptr) return 0;
        return max(TreeDepth(pRoot->left), TreeDepth(pRoot->right)) + 1;
    }
};

BFS:

复制代码
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    int TreeDepth(TreeNode* pRoot) {
        if(pRoot == nullptr) return 0;

        queue<TreeNode*> q;
        q.push(pRoot);

        int res = 0;
        while(!q.empty()) {
            int n = q.size();
            // 遍历当前层的每个点
            for(int i = 0; i < n; i ++ ){
                TreeNode *node = q.front();
                q.pop();
                if(node->left) q.push(node->left);
                if(node->right) q.push(node->right);
            }
            res ++;
        }
        return res;

    }
};
复制代码

 

posted @   luxiayuai  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示