树——二叉树中和为某一值的路径and求二叉树深度

来源:互联网 发布:mac预览图片裁切 编辑:程序博客网 时间:2024/05/19 10:34

题目:path-sum

例如:

给定二叉树头结点root 和 sum = 22,

              5             / \            4   8           /   / \          11  13  4         /  \      \        7    2      1

return true, 因为从头结点到叶子结点的一条路径5->4->11->2和为 22.



代码如下:

import java.util.*;public class Solution {    public boolean hasPathSum(TreeNode root, int sum) {        if(root == null)            return false;        Stack<TreeNode> stack=new Stack();        return help(root,0,sum,stack);    }    public boolean help(TreeNode root,int cur,int sum,Stack<TreeNode> stack)        {        cur+=root.val;        stack.push(root);        if(root.left == null&&root.right == null)            {            if(cur == sum)                return true;        }        boolean result=false;        if(root.left!=null)            result=help(root.left,cur,sum,stack);        if(result == false&&root.right!=null)            result=help(root.right,cur,sum,stack);                cur-=root.val;        stack.pop();        return result;    }}


题目:求二叉树的深度

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
public class Solution {public int TreeDepth(TreeNode root)    {      if(root == null)          return 0;        int[] count=new int[1];        help(root,0,count);        return count[0];    }    public void help(TreeNode root,int cur,int[] count)        {        if(root == null)            return;        cur+=1;        if(root.left == null&&root.right == null)            {            count[0]=Math.max(count[0],cur);            return;        }        help(root.left,cur,count);        help(root.right,cur,count);    }}




0 0
原创粉丝点击