leetcode—树(easy) 3/7

1.最长同值路径

给定一个二叉树,找到最长的路径,这个路径中每个节点都具有相同的值 。这条路径可以经过也可以不经过根节点。(两个节点之间的路径长度由它们之间的变数表示)

思路:通过根节点向下递归找相同的路径

class Solution {
private:
    int count = 0;
public:
    int find(TreeNode* root)
    {
        if(root == nullptr)
        {
            return 0;
        }
        int Left = find(root -> left);
        int Right = find(root -> right);
        int new_left = 0;
        int new_right = 0;
        if(root -> left != nullptr && root -> left -> val == root -> val)
        {
            new_left += 1 + Left;
        }
        if(root -> right != nullptr && root -> right -> val == root -> val)
        {
            new_right += 1 + Right;
        }
        count = max(count, new_left + new_right);
        return max(new_left, new_right);
    }
    int longestUnivaluePath(TreeNode* root) {
        find(root);
        return count;
    }
};

2.N叉树的层序遍历

给定一个N叉树,返回其节点值的层序遍历

思路:队列实现

3.N叉树的最大深度

给定一个N叉数,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

思路:递归。

猜你喜欢

转载自blog.csdn.net/qq_40769893/article/details/88308996
今日推荐