力扣(226.112)补9.8

226.翻转二叉树

可以做,先确定递归函数的作用(定义),再看递归函数需要怎么遍历以及每次遍历需要做什么。

 

class Solution {

public void invert(TreeNode root){

    if(root==null)

    return;

    if(root.left==null&&root.right==null)

    return;

    TreeNode t=new TreeNode();

    t=root.left;

    root.left=root.right;

    root.right=t;    

    invert(root.left);

    invert(root.right);

    public TreeNode invertTree(TreeNode root) {

        invert(root);

        return root;

    }

}

 

112.路径总和

这题我做麻烦了,用了俩个递归函数,第一个递归把该节点之前遍历的数的总和赋给这个结点,第二个递归,遍历所有结点,如果叶子结点中有targetsum说明没问题。

class Solution {

    int flag=0;

    public void f(TreeNode root){

        if(root==null)

        return;

        if(root.left!=null)

        root.left.val=root.left.val+root.val;

        if(root.right!=null)

        root.right.val=root.right.val+root.val;

        f(root.left);

        f(root.right);

    }

    public void f2(TreeNode root,int targetSum){

        if(root==null)

        return;

        if(root.left==null&&root.right==null&&root.val==targetSum)

        flag=1;

        f2(root.left,targetSum);

        f2(root.right,targetSum);

    }

    public boolean hasPathSum(TreeNode root, int targetSum) {

        if(root==null)

        return false;

        f(root);

        f2(root,targetSum);

        if(flag==1)

        return true;

        else return false;

 

    }

}

 

 

你可能感兴趣的:(力扣,算法,leetcode,java)