摘要: 面对问题,理解了思路,但是没有任何想法的时候,不妨从n=1 n=2开始分析下,然后找到递推公式进而成功accept!【二叉树的构建】已知前序和中序遍历序列可以确定这个二叉树。已知中序和后序遍历序列可以确定这个二叉树。层次遍历和后序遍历也可以确定二叉树。二叉排序树和其他遍历序列的结合可以确定二叉树。构建的思路是: 因为树的定义,本身就是一个递归的定义,那么由遍历序列构建树的时候,解决问题的思路往往就是由已知条件,找出树的根节点,然后把大问题,划分成小的问题,现在小的问题是,左右两个子树的问题,返现左右两个子树和原问题是一模一样的,所以可以用递归来解决问,联系子问题和大问题的纽带是当前这颗树的.. 阅读全文
posted @ 2014-04-08 17:05 z陵 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,已知中序和后序的序列是可以唯一确定一个二叉树的。初始化时候二叉树为:==================中序遍历序列, ======O===========后序遍历序列, =================O红色部分是左子树,黑色部分是右子树,O是根节点如上图所示,O是根节点,由后序遍历可知,根据这个O可以把找到其在中序遍历当中的位置,进而,知道当前这个根节点O的左子树的前序遍历和中序遍历序列的范围。以及右子树的前序遍历和中序遍历序列的范围。到这里返现出现了重复的子问题,而且子问题的规模没有原先的问题大,即红色部分和黑色部分。而联系这两个子问题和原先的大问题的纽带是这... 阅读全文
posted @ 2014-04-08 17:04 z陵 阅读(598) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,节点的值仅限于从0-9,每一个从根节点达到叶子节点的路径代表一个数字。一个例子,如果根节点到叶子节点的路径是1->2->3,那么代表这个数字是123。寻找所有路径代表的数字的和。例如: 1 / \ 2 3从根节点到叶子节点的路径是1->2代表的数字是12.从根节点到叶子节点的路径是1->3代表的数字是13.返回和为 sum = 12 + 13 =25.+++++++++++++++++++++ 阅读全文
posted @ 2014-04-08 17:03 z陵 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,已知前序和中序的序列是可以唯一确定一个二叉树的。初始化时候二叉树为:==================前序遍历序列, O=================中序遍历序列, ======O===========红色部分是左子树,黑色部分是右子树,O是根节点如上图所示,O是根节点,由前序遍历可知,根据这个O可以把找到其在中序遍历当中的位置,进而,知道当前这个根节点O的左子树的前序遍历和中序遍历序列的范围。以及右子树的前序遍历和中序遍历序列的范围。到这里返现出现了重复的子问题,而且子问题的规模没有原先的问题大,即红色部分和黑色部分。而联系这两个子问题和原先的大问题的纽带是... 阅读全文
posted @ 2014-04-08 17:03 z陵 阅读(376) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }填入每个节点的next指针,如果没有右边的节点,那么这个next指针设置为NULL。初始时候所有歌next指针都设置成NULL。Note:空间复杂度必须是常量级别的。你可以假设这是个完全二叉树 (ie, 所有的... 阅读全文
posted @ 2014-04-08 17:02 z陵 阅读(207) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,寻找值最大的路径。这个路径可以从这个树上面的任意一个节点开始,然后在任意一个节点结束。例如:给定下面的二叉树, 1 / \ 2 3返回6.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find the maximum path... 阅读全文
posted @ 2014-04-08 17:01 z陵 阅读(235) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树和一个和,判断这个树中是否有一个从根到叶子的路径,使其这个路径上面的所有节点值的和为这个给定的值。并且返回所有等于给定值的路径。例如:给定下面的二叉树,并且和为22。 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回... 阅读全文
posted @ 2014-04-08 16:59 z陵 阅读(423) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树和一个和,判断这个树中是否有一个从根到叶子的路径,使其这个路径上面的所有节点值的和为这个给定的值。例如:给定下面的二叉树,并且和为22。 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回true,因为这里面存在一个根... 阅读全文
posted @ 2014-04-08 16:58 z陵 阅读(237) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,找出他的最小的深度。最小的深度,指的是从根节点到叶子节点的,经历的最多的节点个数。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find its maximum depth.The maximum depth is the number of nodes al 阅读全文
posted @ 2014-04-08 16:57 z陵 阅读(221) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,找出他的最小的深度。最小的深度,指的是从根节点到叶子节点的,经历的最小的节点个数。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find its minimum depth.The minimum depth is the number of nodes al 阅读全文
posted @ 2014-04-08 16:56 z陵 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 利用递归,构造二叉查找树,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给一个升序的单向链表,把他转换成一个二叉查找树++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a singly linked list where elements are sorted in ascending order, convert it to a height bala 阅读全文
posted @ 2014-04-08 16:55 z陵 阅读(211) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个升序的数组,把他转换成一个高度平衡的二叉查找树++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given an array where elements are sorted in ascending order, convert it to a height balanced BST.++++++++++++ 阅读全文
posted @ 2014-04-08 16:54 z陵 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 本质上是递归遍历左右后在与根节点做判断,本质上是后序遍历++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给你一个二叉树,判断他是否是个有效的二叉查找树(BST)。假定一个BST树按照下面的内容定义:左子树的节点的值都小于父节点。右子树的节点的值都大于父节点。左子树和右子树都得是合法的而二叉查找树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a bin 阅读全文
posted @ 2014-04-08 16:53 z陵 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 提到二叉查找树,就得想到二叉查找树的递归定义,左子树的节点值都小于根节点,右子树的节点值都大于根节点。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个n,问有多少个不同的二叉查找树,使得每个节点的值为1...n?例如,给定n=3,你的程序应该返回所有的这5个不同的二叉排序树的个数。 1 3 3 2 1 \ / / / \ \ 3 2 1 1 ... 阅读全文
posted @ 2014-04-08 16:52 z陵 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 当数组为1,2,3,4,...,n时,基于以下原则构建的BST树具有唯一性:以i为根节点的树,其左子树由[1,i-1]构成,其右子树由[i+1, n]构成。我们假定f(i)为以[1,i]能产生的Unique Binary Search Tree的数目,则如果数组为空,毫无疑问,只有一种BST,即空树,f(0)=1。如果数组仅有一个元素1,只有一种BST,单个节点,f(1)=1。如果数组有两个元素1,2,那么有如下两种可能:1 2 \ / 2 1那么分析可得f(2) = f(0) * f(1),1为根的情况 + f(1) * f(0),2为根的情况再看一看3个元素... 阅读全文
posted @ 2014-04-08 16:51 z陵 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 本质上是二叉树的层次遍历,遍历层次的过程当中把next指针加上去。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++和问题"Populating Next Right Pointers in Each Node"类似。如果给定的树是任意的二叉树,你先前的方法还能工作吗?笔记:你只能用常量的辅助空间。例如给定的是羡慕的二叉树, 1 / \ 2 3 / \ \ 4 5 7当调用完你的函数后,这个树应该看起来想这... 阅读全文
posted @ 2014-04-08 16:50 z陵 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 本质上是二叉树的root->right->left遍历。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,就地的把他转换成一个链表。例如:给定 1 / \ 2 5 / \ \ 3 4 6转换后的树应该向这样子: 1 \ 2 \ 3 \ 4 \ 5 \ ... 阅读全文
posted @ 2014-04-08 16:49 z陵 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 平衡的二叉树的定义都是递归的定义,所以,用递归来解决问题,还是挺容易的额。本质上是递归的遍历二叉树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,判定他是不是高度平衡的二叉树。对于这个问题,每个节点的两个子树的深度不会相差超过1,那么这样的二叉树就是一个平衡的二叉树+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, 阅读全文
posted @ 2014-04-08 16:48 z陵 阅读(232) 评论(0) 推荐(0) 编辑
摘要: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,判断是否他自己的镜像对称的。(以自身中间,为镜像对称的)例如羡慕这个二叉树就是对称的: 1 / \ 2 2 / \ / \3 4 4 3但是下面这个就不是对称的: 1 / \ 2 2 \ \ 3 3笔记:如果你既能迭代的解决这个问题,又能递归的解决这个问题,那么将给你加分。++++++++++++++++++++++++++++++++++++++++++++++... 阅读全文
posted @ 2014-04-08 16:47 z陵 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 迭代版本用的是二叉树的DFS,中的root->right->left++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定两个二叉树,写一个函数判断他们是否是相同的。如果两个二叉树的结构相同而且每个节点里面的值也相同,那么认为他们是相同的二叉树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given two binary trees, write a 阅读全文
posted @ 2014-04-08 16:46 z陵 阅读(499) 评论(0) 推荐(0) 编辑