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叉数,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
思路:递归。