首页 > TAG信息列表 > 同值
leetcode 687 最长同值路径
给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 做这道题的时候,我一开始想到的是直接从根节点往下遍历,然后用哈希表记录相同节点出现的次数,然后取出出现次数最多的元素 代码类似这样 public void long687. 最长同值路径
687. 最长同值路径 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1: 输入:root = [5,4,5,1,1,5] 输出:2 示例 2: 输入:root = [1,4,5Leetcode 687. 最长同值路径 (二叉树递归)
维护一个递归函数,返回当前节点往下具有相同值的最长路径,最大路径可以左右都选,因此在递归计算的同时,求出最大路径。 注意不要改变对应根节点的返回值。代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *687. 最长同值路径
深度优先搜索 class Solution { int maxLength = 0; public int longestUnivaluePath(TreeNode root) { depth(root); return maxLength; } /** * 在《104. 二叉树的最大深度》的基础上 * 顺便计算以root为起始节点的最长同值路径最长同值路径
题目 代码: class Solution { //记录树遍历过程中的最大值 int ans = 0; public int longestUnivaluePath(TreeNode root) { arrowLength(root); return ans; } //表示与node节点相同的最大长度 public int arrowLength(TreeNode node