Day16|513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树

513.找树左下角的值

层序依旧秒。递归还是一如既往的想不出来,看完讲解自己敲了一遍。

112.路径总和

做了十几道题了,这是第一道靠自己用递归遍历做出来的题。。。也算进步。

我代码主要问题就是给所有路径都做了判断,不会剪枝操作。其实只要左子树或者右子树返回了一个true就可以一直return true;告诉它的父节点了。

但也要明白我这样写的原理,可以更好体会递归的过程:

class Solution {

public:

    int sum = 0;



    bool hasPathSum(TreeNode* node, int targetSum) {

        if (node == nullptr) return false;

        if (node->left == nullptr && node->right == nullptr) {

            sum += node->val;

            return sum == targetSum;

        }

        sum += node->val;

        bool b1 = false;

        bool b2 = false;

        if (node->left) {

            b1 |= hasPathSum(node->left, targetSum);

            sum -= node->left->val;

        }

        if (node->right) {

            b2 |= hasPathSum(node->right, targetSum);

            sum -= node->right->val;

        }

        return b1 | b2;

    }

};

106.从中序与后序遍历序列构造二叉树

这道题第一次碰见是真的一点思路都没有。

向量片段(左闭右开)vector<int> newvec(oldvec.begin() + i, oldvec.begin() + j);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值