zoukankan      html  css  js  c++  java
  • 第112题:路径总和

    一. 问题描述

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

    说明: 叶子节点是指没有子节点的节点。

    示例: 

    给定如下二叉树,以及目标和 sum = 22,

                   5

                  /   

                4    8

                /      /

              11  13  4

               /           

             7    2          1

    返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。

    二. 解题思路

    本体步骤:采用深度优先遍历+递归的方法进行判断。

    步骤一:构建递归函数(root,已经积累的值val,目标值tacket)。

    步骤二:判断二:如果root是叶节点且val==tacket则返回true,如果root是非叶节点则接着进行将root转换成root.left和root.right节点进行递归,只要有一个为true,则返回true。

    步骤三:重复步骤二:直到遍历所有节点。

    三. 执行结果

    执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

    内存消耗 :37.5 MB, 在所有 java 提交中击败了57.49%的用户

    四. Java代码

    class Solution {
        public boolean hasPathSum(TreeNode root, int sum) {
             if(root==null) {
                return false;
            }else {
                return getTree(root,root.val,sum);
            }
        }
        
        public boolean getTree(TreeNode root,int num,int tacket) {
            
            if(root.left==null&&root.right==null&&num==tacket) {
                return true;
            }
            
            if(root.left!=null&&getTree(root.left,num+root.left.val,tacket)) {
                return true;
            }
            
            if(root.right!=null&&getTree(root.right,num+root.right.val,tacket)) {
                return true;
            }
            
            return false;
            
            
        }
        
        
    }
  • 相关阅读:
    微擎签名出错 invalid signature
    微擎 pdo_fetchall() 函数
    Qt 文本文件的读写操作
    Qt Qlistwidget、Qlistview
    Qt保留小数点后一位、两位……
    Excel怎么快速删除全部空行
    光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TV-Line、Flare/Ghost)
    Image J 介绍
    C# MODBUS协议上位机程序
    C/C++ memmove与memcpy的区别及实现
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11864455.html
Copyright © 2011-2022 走看看