![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
FSak47
这个作者很懒,什么都没留下…
展开
-
判断一个二叉树是否是另一个二叉树的子树
点:二叉树理解,递归的运用题意:如二叉树A,如下: 16 7原创 2017-08-17 20:30:47 · 2687 阅读 · 0 评论 -
二叉树的镜像(反转)
点:二叉树题意:以前左节点改成右节点,以前右节点改成左节点剑指offer面试题19思路:就是左右孩子指针的交换代码:#include #include template struct Node { T val; Node *lchild; Node *rchild; Node(T _val):val(_val)原创 2017-08-18 10:16:08 · 342 阅读 · 0 评论 -
二叉树的深度
点:二叉树题意:相当于二叉树的最高层数,如果只有一个节点则为1,否则为最低一层叶子节点所在层剑指offer面试题39思路:按后序遍历,不断递归获取左右子树直到叶子节点为止,按左右子树深度最高者代码“:#include #include template struct Node { T val; Node *lchild;原创 2017-08-18 10:19:55 · 198 阅读 · 0 评论 -
判断一个二叉树是否是AVL树
点:二叉树题意:判断一个二叉树是否是AVL树,即二叉树任意一个节点的左右子树深度之差不得大于1剑指offer面试题39引申思路:和算二叉树的深度一样,依然按后序,然后依次求深度,同时传入一个bool变量入函数栈,每个节点只要发现左右子树深度超过1,就可以说明已经不是avl树了。在剑指offer中还有一种更高效的解法,它虽然也依赖树的深度,但不是以算深度为主导原创 2017-08-18 11:18:25 · 3312 阅读 · 0 评论 -
二叉树按层遍历并按层打印和蛇形打印
点:技巧性问题题意:一个二叉树按层的遍历和按层打印常见面试题思路:二叉树按层遍历和打印有很多办法,无外乎各种方式做到按层暂存并暂存该层的下一层节点,这样不停的直到树结尾我的思路是用2个队列,队列1保存当前层节点,队列2保存当前层下一层的节点,从左节点的左子节点开始,这是对应有些面试题要求保证输出的顺序是从左至右,以及蛇形打印之类的题。1、按顺序从左到右打原创 2017-08-21 14:32:28 · 3856 阅读 · 0 评论 -
二叉树打印节点和为某值的全部路径
点:深度遍历运用题意:如一个二叉树,求和为某节点值的全部路径。剑指offer面试题25思路:深度遍历中的前序遍历是先拿当前节点值,再接着遍历,显然这个是适合本题需求的题意要求能打印出全部的路径,这需要遍历过程中,能知道之前已经走过的路径,也就是需要将过往路径也递归入栈,所以,走前序遍历,入栈的除了当前的节点,还包括当前已经累加的和,当前走过的路径,当然还需要那个原创 2017-08-21 15:20:12 · 513 阅读 · 0 评论 -
打印普通二叉树最大搜索子树
点:二叉树边界技巧题意:一个任意的二叉树,可以不是二叉排序树,或者部分子树是二叉排序的,打印这个二叉树中符合二叉搜索树性质的子树中,节点最多的子树程序员代码面试指南面试题思路:二叉排序树的性质就是:父节点比左节点大,比右节点小。依赖这个性质思考:首先,这个适合后续遍历,因为后续遍历能得到左右子树的执行结果再去判断计算自己的结果,然后,随便画一个二叉树原创 2017-08-21 16:48:01 · 358 阅读 · 0 评论