leetcode Minimum Depth of Binary Tree
摘要:题目:返回根节点到最近的叶子节点的距离。例如:{1,2},其中2是1的左子树,1的右子树为空,2为叶子节点,那么此时返回2.如果用简单的递归,以为是返回左右两边的最小值加1,那么上面那个case就错了,因为如果返回左右两边最小值加1的话,上面1的右边是0,所以返回1,但我们想要的是2.所以要另外注意...
阅读全文
posted @
2014-11-30 00:07
higerzhang
阅读(219)
推荐(0)
leetcode[110] Balanced Binary Tree
摘要:判断一棵树是不是平衡二叉树。思路:递归。每个节点的左右子树是平衡二叉树,并且左右子树的高度相差不超过一。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * Tr...
阅读全文
posted @
2014-11-29 23:36
higerzhang
阅读(341)
推荐(0)
leetcode Convert Sorted List to Binary Search Tree
摘要:把一个有序链表构成成平衡二叉树。和上一题有一点像。思路一:将有序链表存在一个数组里。然后根据每次访问中间节点当做根节点递归左右子树节点即可。时间O(n)空间O(n)代码如下:/** * Definition for singly-linked list. * struct ListNode { * ...
阅读全文
posted @
2014-11-29 21:52
higerzhang
阅读(766)
推荐(0)
leetcode Convert Sorted Array to Binary Search Tree
摘要:利用更有序数组,构造平衡二叉树。思路,递归,每次中间节点为根节点,然后递归获得左右子树。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *...
阅读全文
posted @
2014-11-29 21:38
higerzhang
阅读(179)
推荐(0)
leetcode Binary Tree Level Order Traversal II
摘要:是这题的变种对一棵树从最后一次开始层次遍历,并返回结果。例如:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its bottom-up level order traversal as:[ ...
阅读全文
posted @
2014-11-29 15:26
higerzhang
阅读(231)
推荐(0)
leetcode Construct Binary Tree from Preorder and Inorder Traversal
摘要:如果你没有做过根据中序遍历和后序遍历构造树,那么请先看Construct Binary Tree from Inorder and Postorder Traversal。这题是:根据前序遍历和中序遍历构造树。类似上一题的思路,我们可以断定正确的是中序遍历的起始下标,和前序遍历左子树的起点下标,以及...
阅读全文
posted @
2014-11-29 14:56
higerzhang
阅读(235)
推荐(0)
leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
摘要:代码实现:给定一个中序遍历和后序遍历怎么构造出这颗树!(假定树中没有重复的数字)因为没有规定是左小右大的树,所以我们随意画一颗数,来进行判断应该是满足题意的。 3 / \ 2 4 /\ / \1 6 5 7中序遍历:1263547.后序遍历:16257...
阅读全文
posted @
2014-11-29 14:18
higerzhang
阅读(878)
推荐(0)
leetcode Maximum Depth of Binary Tree
摘要:返回树的深度。递归:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val...
阅读全文
posted @
2014-11-28 15:34
higerzhang
阅读(160)
推荐(0)
leetcode Binary Tree Zigzag Level Order Traversal
摘要:给定一个树,按照Z字形记录每一行。例如:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its zigzag level order traversal as:[ [3], [20,9], ...
阅读全文
posted @
2014-11-28 12:23
higerzhang
阅读(139)
推荐(0)
leetcode Binary Tree Level Order Traversal
摘要:给定一个数,广度优先输出记录。例如:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]思...
阅读全文
posted @
2014-11-28 00:19
higerzhang
阅读(403)
推荐(0)
leetcode Symmetric Tree
摘要:这里是给定一个数,判断是不是对称的,即根据根画一竖直线对折重合一样。For example, this binary tree is symmetric: 1 / \ 2 2 / \ / \3 4 4 3But the following is not: 1 / \ ...
阅读全文
posted @
2014-11-27 19:48
higerzhang
阅读(242)
推荐(0)
leetcode[100] Same Tree
摘要:判断两个树是不是相等。思路:递归。当前节点相等,且他们左子树和右子树都相等。class Solution {public: bool isSameTree(TreeNode *p, TreeNode *q) { if (!p) return !q; if (...
阅读全文
posted @
2014-11-27 00:34
higerzhang
阅读(310)
推荐(0)
leetcode[99] Recover Binary Search Tree
摘要:题目:二叉树中有两个节点对换了值,恢复他们。思路:因为中序遍历是有序的,如果中序遍历后的数组出现乱序,说明就是交换的。从前往后,第一次乱序的第一个,后最后一次乱序的后一个,然后把这两个值对换就好了。想了个非常挫的办法。先中序遍历Binary Tree Inorder Traversal,然后在数组中...
阅读全文
posted @
2014-11-26 23:44
higerzhang
阅读(703)
推荐(0)
leetcode[98] Validate Binary Search Tree
摘要:判断给定的数是不是合法的BST。即当前节点值比他左子树大,比右子树小。思路一:递归,考虑所有可能。1. 为空是返回true2. 用flag记录左子树返回的合法性。考虑左子树不空的时候,那么要根要比左子树的最右下角要大。3. flag为真且右子树也为真则返回真。考虑右子树时,根要比右子树的最左小。/*...
阅读全文
posted @
2014-11-26 00:36
higerzhang
阅读(1244)
推荐(0)
leetcode[97] Interleaving String
摘要:题目给定s1和s2两个串,判断是否能合并成s3.如果s3是s1和s2按顺序取某些数做结合的,那么就是true。例如s1 = “abc”,s2=“def”,那么s3=“abdefc” 先去s1前两个,再取s2,再取是第三个。所以是合法的。Givens1,s2,s3, find whethers3is ...
阅读全文
posted @
2014-11-25 23:41
higerzhang
阅读(1261)
推荐(0)
leetcode[96] Binary Tree Inorder Traversal
摘要:给定树根root。实现中序遍历,也就是左根右。用递归的话,很简单,左边的返回值加上root的再加上右边的就行。我自己写的有点挫:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *le...
阅读全文
posted @
2014-11-25 00:34
higerzhang
阅读(439)
推荐(0)
leetcode[95] Unique Binary Search Trees II
摘要:和上一题Unique Binary Search Trees一样,这里是要记录所有的可能。存在树里面。这题还是有点难的,我拿了笔写了前几个,推敲了一下,发现如果和上一题一样,存前面的值计算后面的的话会非常复杂,且可能涉及到给一颗数的所有节点加某个值。最终还是放弃用这个方法。可行的二叉查找树的数量是相...
阅读全文
posted @
2014-11-24 23:39
higerzhang
阅读(601)
推荐(0)
leetcode[94] Unique Binary Search Trees
摘要:给定n,那么从1,2,3...n总共可以构成多少种二叉查找数呢。例如给定3Givenn= 3, there are a total of 5 unique BST's. 1 3 3 2 1 \ / / / \ ...
阅读全文
posted @
2014-11-24 00:18
higerzhang
阅读(580)
推荐(0)
leetcode[93] Restore IP Addresses
摘要:题目:给定一个一连串数字的字符串,返回可以由他们组成的合法的ip地址例如Given"25525511135",return["255.255.11.135", "255.255.111.35"]. (Order does not matter)方法一:如下图,我们设置one,two,thr为三个断点...
阅读全文
posted @
2014-11-23 19:43
higerzhang
阅读(976)
推荐(0)
leetcode[92] Reverse Linked List II
摘要:这题和Reverse Node in k-Group相关,主要是看如何翻转一个链表。这里是指定区间从第m个到第n个的翻转例如:Given1->2->3->4->5->NULL,m= 2 andn= 4,return1->4->3->2->5->NULL./** * Definition for si...
阅读全文
posted @
2014-11-23 15:58
higerzhang
阅读(449)
推荐(0)