题解 | #二叉树中和为某一值的路径(一)#

二叉树中和为某一值的路径(一)

http://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

采用二叉树的先序遍历,在叶子结点判断数字和是否相等即可,需要注意的是测试数据里,如果根结点的值等于数字和,是不算一条路径的,所以需要进行排除;而且题目只要求找到一条路径,所以可以假如左子树已经找到路径,那么右子树就不需要找了,可以进行剪枝。

时间复杂度最慢O(N),平均复杂度小于O(N)

空间复杂度O(1)

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return bool布尔型
     */
    public boolean hasPathSum (TreeNode root, int sum) {
        return root == null || root.val == sum && (root.left != null || root.right != null)? false : preTravelTree(root, sum, 0);
    }
    
    public boolean preTravelTree(TreeNode t, int sum, int count){
        if(t == null)
            return sum == count;
        count += t.val;
        return preTravelTree(t.left, sum, count) ? true : preTravelTree(t.right, sum, count);
    }
}
全部评论

相关推荐

09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务