代码随想录算法训练营第二十天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

文章探讨了二叉树的相关问题,包括如何一次性构造二叉树,合并时考虑不同子树为空的情况,以及层序遍历的实现。同时,强调在验证二叉树顺序时,应注意全局最大值的判断,避免使用INT_MIN作为初始值的陷阱。此外,提及C++STL中sort函数的时间复杂度为O(nlogn)。
摘要由CSDN通过智能技术生成

654.

构造二叉树,一次过,不太难

617.

merge的时候左空/右空/both空都要分开讨论left、right和root的写法

700.

层序遍历,bfs,用queue,只是这里不需要用queue,直接按照直觉左右左右就行,但其本质是层序遍历,只不过因为只有两个子节点且明确方向罢了

98.

这道题不需要在回溯里证明左小右大,直接写出一个序列(bfs or dfs都行),判断是否递增即可

即使是用回溯,也是用中序遍历看是否一直增大

陷阱:只比较局部root和其left、right的合法性,但其实最右的node不仅要大于自己的root,还要大于最上面的root

需要用max记录,max不能初始化为INT_MIN因为最小的node有可能是INT_MIN这样就没办法只保证大于max了。可以用

long long maxVal = LONG_MIN;

如果题目更刁钻LONG_MIN都不行那就只能一直向左 root = root -> left 找到实际的最小值了

int的最小值 = -2^31

C++ STL中的sort函数采用的是快速排序算法(quick sort),其时间复杂度为O(nlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值