摘要:
最容易想到的办法是先序遍历,从顶至底判断每个子树是不是平衡二叉树。 缺点是产生大量重复计算,代码如下。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * T 阅读全文
摘要:
思路:复试的时候做过这个题,后序遍历左右子树,当前节点深度为左右子树深度最大值+1。 剑指 Offer 55 - I. 二叉树的深度 /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tre 阅读全文
摘要:
思路:二叉搜索树的中序倒序是从大到小,所以只需要在中序倒序遍历的时候计数就行了。 只是没有考虑到代码的鲁棒性。(k值问题) 剑指 Offer 54. 二叉搜索树的第k大节点 /** * Definition for a binary tree node. * public class TreeNod 阅读全文
摘要:
理解好二分法。 利用两次二分法,寻找左右边界,相减。 剑指 Offer 53 - I. 在排序数组中查找数字 I class Solution { public int search(int[] nums, int target) { int i = 0, j = nums.length - 1; 阅读全文
摘要:
A遍历到链表尾部就回到B头部继续遍历 B类似 注意三目运算符的写法。 剑指 Offer 52. 两个链表的第一个公共节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode 阅读全文