跳到主要内容

13.7 练习

基础难度​

226. Invert Binary Tree​

巧用递归,你可以在五行内完成这道题。


617. Merge Two Binary Trees​

同样的,利用递归可以轻松搞定。


572. Subtree of Another Tree​

子树是对称树的姊妹题,写法也十分类似。


404. Sum of Left Leaves​

怎么判断一个节点是不是左节点呢?一种可行的方法是,在辅函数里多传一个参数,表示当前节点是不是父节点的左节点。


513. Find Bottom Left Tree Value​

最左下角的节点满足什么条件?针对这种条件,我们该如何找到它?


538. Convert BST to Greater Tree​

尝试利用某种遍历方式来解决此题,每个节点只需遍历一次。


235. Lowest Common Ancestor of a Binary Search Tree​

利用 BST 的独特性质,这道题可以很轻松完成。


530. Minimum Absolute Difference in BST​

还记得我们所说的,对于 BST 应该利用哪种遍历吗?


进阶难度​

1530. Number of Good Leaf Nodes Pairs​

题目 543 的变种题,注意在辅函数中,每次更新的全局变量是左右两边距离之和满足条件的数量,而返回的是左右两边所有(长度不溢出的)子节点的高度 +1。


889. Construct Binary Tree from Preorder and Postorder Traversal​

给定任意两种遍历结果,我们都可以重建树的结构。


106. Construct Binary Tree from Inorder and Postorder Traversal​

给定任意两种遍历结果,我们都可以重建树的结构。


94. Binary Tree Inorder Traversal​

因为前中序后遍历是用递归实现的,而递归的底层实现是栈操作,因此我们总能用栈实现。


145. Binary Tree Postorder Traversal​

因为前中序后遍历是用递归实现的,而递归的底层实现是栈操作,因此我们总能用栈实现。


236. Lowest Common Ancestor of a Binary Tree​

现在不是 BST,而是普通的二叉树了,该怎么办?


109. Convert Sorted List to Binary Search Tree​

把排好序的链表变成 BST。为了使得 BST 尽量平衡,我们需要寻找链表的中点。


897. Increasing Order Search Tree​

把 BST 压成一个链表,务必考虑清楚指针操作的顺序,否则可能会出现环路。


653. Two Sum IV - Input is a BST​

啊哈,这道题可能会把你骗到。


450. Delete Node in a BST​

当寻找到待删节点时,你可以分情况考虑——当前节点是叶节点、只有一个子节点和有两个子节点。建议同时回收内存。