博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 687. 最长同值路径(Longest Univalue Path)
阅读量:5462 次
发布时间:2019-06-15

本文共 1602 字,大约阅读时间需要 5 分钟。

目录

题目描述:

给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。

注意:两个节点之间的路径长度由它们之间的边数表示。

示例 1:

输入:              5             / \            4   5           / \   \          1   1   5输出:    2

示例 2:

输入:              1             / \            4   5           / \   \          4   4   5输出:    2

注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。


解法:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void getPath(TreeNode* root, int& lh, int & rh, int & res){        // lh indicates height of the path in left subtree with same value         // rh indicates height of the path in right subtree with same value        if(!root){            lh = 0;            rh = 0;        }else{            lh = 0, rh = 0;            int _res = 0;            if(root->left){                int llh = 0, lrh = 0;                getPath(root->left, llh, lrh, res);                if(root->left->val == root->val){                    lh = max(llh, lrh) + 1;                }            }            if(root->right){                int rlh = 0, rrh = 0;                getPath(root->right, rlh, rrh, res);                if(root->right->val == root->val){                    rh = max(rlh, rrh) + 1;                }            }            res = max(lh + rh, res);        }    }        int longestUnivaluePath(TreeNode* root) {        int lh = 0, rh = 0, res = 0;        getPath(root, lh, rh, res);        return res;    }};

转载于:https://www.cnblogs.com/zhanzq/p/10607255.html

你可能感兴趣的文章
浅谈response和request方法
查看>>
浮点数的二进制表示
查看>>
leetcode 173-Binary Search Tree Iterator(medium)
查看>>
【移动开发】Android中WIFI开发总结(二)
查看>>
beyond compare 数据对比工具
查看>>
python3链接oracle
查看>>
【NOIP2017】时间复杂度
查看>>
poj 3375 Network Connection
查看>>
C# 获取当前月第一天和最后一天
查看>>
shipin_beanshell_讲解
查看>>
购物小练习
查看>>
朴素贝叶斯应用:垃圾邮件分类
查看>>
vs code 快捷键大全
查看>>
mysql注意:
查看>>
[1,2,3,4,5,6,7,8] 转换成 [(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8)] ...
查看>>
彻底删除mysql 分类: database 201...
查看>>
ARM指令集中立即数寻址的范围
查看>>
学习:关于oracle序列(sequence)组成的主键和唯一的字符串组成的主键在性能上如何?...
查看>>
用一道面试题考察对闭包的理解
查看>>
android中判断某个应用是否存在
查看>>