
树与图面试题汇总
moses1213
积跬步,至千里;积小流,成江海!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
判断二叉树是否平衡
题目:实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个结点,其两个子树的高度差不超过1。解法一:因为要检查每个结点的高度,如果用循环遍历每个结点非常麻烦,所以想到用递归。先判断根结点两个子树的高度差,如果满足再分别判断根结点的两个子结点是否满足平衡。求结点的高度也可以用递归的方法。int GetHeight(BinaryTreeNode* pRoot){ if原创 2016-07-25 10:02:32 · 407 阅读 · 0 评论 -
有序数组创建高度最小的二叉查找树
题目:给定一个整数数组,元素各不相同且按升序排列,编写一个算法,创建一个高度最小的二叉查找树。解法:二叉查找树的特点是根的左子树都比根结点小,右子树都比根结点大,左右子树结点数目相同时有望时树的高度最小。因此根结点可以取数组的中位数。左子结点为数组前半段的中位数,右子结点为数组后半段的中位数,递归过程实现,需要注意的是递归的终止条件。BinaryTreeNode* CreateCore(i原创 2016-07-25 11:40:01 · 1706 阅读 · 0 评论 -
判断二叉树是否二叉查找树
题目:实现一个函数,检查一棵二叉树是否为二叉查找树。解法一:二叉树一个非常重要的特点的是它的中序遍历为递增序列,如果中序遍历递增,那么肯定是二叉查找树。中序遍历的结果可以保存在数组里面。void AddToArray(BinaryTreeNode* pRoot, int* array, int& size){ if(pRoot) { AddToArray(pRoot->m_pLe原创 2016-07-25 17:06:45 · 5164 阅读 · 0 评论 -
剑指offer-面试题58:二叉树的下一个结点
题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。思路:举一个例子,容易发现规律。这个问题可以分为两种情况:(1)结点存在右子结点,那么中序遍历的下一个结点就是它的右子结点。(2)结点不存在右子结点,这里又要考虑两种情况:一是结点本身作为左子结点,那么它的下一个结点就是它的父结点;二是结点本身作为原创 2016-05-02 15:35:10 · 743 阅读 · 0 评论 -
二叉树判断子树问题
题目:你有两颗非常大的二叉树:T1,有几百万个结点;T2,有几百个结点。设计一个算法,判断T2是否为T1的子树。解法:二叉树中结点太多,遍历结点比较用递归的方法比较合适。如果刚开始根结点相同,就开始比较左右子结点是否相同(注意这个过程不是判断子树的过程,而是严格比较左右子结点是否相等,而不能再往下传递)。如果所有节点比较之后都相等,返回真。否则再去判断T1的左右子树是否包含T2,这一步是递归过原创 2016-07-26 11:01:07 · 2014 阅读 · 0 评论 -
剑指offer-面试题25:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的形成一条路径。思路:对于每棵子树,它都是一个求解树中结点值的和为输入整数的所有路径的问题,整数为去除它的父节点的和之后新的值,所以很明显可以用递归的方法求解。那么对于每个结点,怎样判断是否已经是要求的路径呢?题目要求和为整数且是叶结点。作者给出的思路简单粗暴,那就是遍历,不管加原创 2016-04-02 16:36:02 · 598 阅读 · 0 评论 -
返回二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 这道问题其实很简单,原以为可以打出来一次运行成功。实际发现脱离编译器手写没有一点bug真的是有点难度,稍不注意代码就错了。这里原创 2016-07-29 10:56:53 · 469 阅读 · 0 评论 -
二叉树两个结点的第一个共同祖先
题目:设计并实现一个算法,找出二叉树中某两个结点的第一个共同祖先。不得将额外的结点存储在另外的数据结构中。注意,这不一定是二叉查找树。解法:如果两个结点都在树中,且其中一个为根结点,那么直接返回根结点。接下来判断两个结点是否在根结点的同一个子树中,如果不同时在根结点的左子树或者右子树中,则根结点是第一个祖先,直接返回根结点。如果同在根结点的左子树中,递归判断两个结点在左子树中的第一个共同祖先。原创 2016-07-25 20:53:07 · 2644 阅读 · 0 评论