![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 70
_忽如远行客
人一能之,已百之;人十能之,己千之.果能此道矣,虽愚必明,虽柔必强。
展开
-
【二叉树问题】递归实现链表的前序、中序、后序遍历
无论是递归方法还是非递归方法,时间复杂度为O(N),N为二叉树节点个数。额外空间复杂度为O(L),L为二叉树的层数。递归方法实现前序、中序、后序遍历注意vector<int>result进行引用传递的做法: 引用传递方法1:void DLR(vector<int> & result2){...//此函数修改result2,主函数中result会...原创 2018-12-31 11:09:35 · 409 阅读 · 0 评论 -
【二叉树】搜索二叉树的判断
知识点搜索二叉树又叫二叉查找树,或者二叉排序树。搜索二叉树的性质每棵子树的头节点的值都比各自左子树上的所有节点值要大,同时比各自右子树上的所有节点值要小。中序遍历搜索二叉树得到的序列是升序序列。反过来如果遍历得到序列是升序序列,该二叉树一定是搜索二叉树。红黑树、平衡搜索二叉树都是搜索二叉树的不同实现,但都致力于提高搜索二叉树的搜索效率,同时让搜索二叉树的调整代价尽量小。题目...原创 2019-01-01 21:26:25 · 320 阅读 · 0 评论 -
【二叉树重点】求二叉树的最大搜索子树
题目给定一棵二叉树,其中所有节点的值都不一样,找到含有节点最多的搜索二叉子树,并返回这棵子树的头节点。思路二叉搜索树的性质:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。需要后序递归遍历二叉树,才能从下到上不断更新以当前...原创 2019-01-01 21:25:11 · 550 阅读 · 0 评论 -
【二叉树】求二叉树上节点间的最大距离
题目从二叉树的节点A出发,可以向上或者向下走,但沿途的节点只能经过一次,当到达节点B时,路径上的节点数叫作A到B的距离。对于给定的一棵二叉树,求整棵树上节点间的最大距离。给定一个二叉树的头结点root,请返回最大距离。保证点数大于等于2小于等于500.思路如中节点4和节点2之间的距离为2,节点2和5之间的距离为3.设二叉树的头节点为head,这棵树的节点间最大距离可从以下三种情况中...原创 2019-01-01 19:51:14 · 710 阅读 · 0 评论 -
【二叉树】查找搜索二叉树被调换节点
知识点搜索二叉树的父节点大于左孩子节点的值,小于右孩子节点的值。中序遍历搜索二叉树得到的序列为升序序列。题目一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请找到这两个错误节点并返回他们的值。保证二叉树中结点的值各不相同。给定一棵树的根结点,请返回两个调换了位置的值,其中小的值在前。思路调换位置后,中序遍历得到的序列一定不是升序序列...原创 2019-01-01 16:15:04 · 714 阅读 · 0 评论 -
【二叉树】对折纸,从上往下返回折痕的方向
目录 题目思路代码实现注意点题目给一张纸,从纸的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up...原创 2019-01-01 15:32:14 · 380 阅读 · 0 评论 -
【二叉树】完全二叉树的判断
知识点完全二叉树指的是除了最后一层外,其余层上的节点必须是满的的二叉树。最后一层如果满了,就是一棵满二叉树,如果没满,空缺的节点位置都集中在最后一层的右边。教科书中对完全二叉树的定义为: 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。题目给定一个二叉树的头节点head,判断一棵树是否为完全二叉树。思...原创 2019-01-01 14:13:10 · 498 阅读 · 0 评论 -
【二叉树】平衡二叉树的判断
知识点平衡二叉树的性质1、空树是一棵平衡二叉树2、一棵树不为空,并且其中所有的子树都满足各自的左子树与右子树的高度差都不超过1.这棵以节点1为头的整棵树树不是平衡二叉树,因为以2节点为头的左子树的高度为2,右子树高度为0.题目给定一个二叉树的头节点head,判断该二叉树是否是平衡二叉树,如果是,返回平衡二叉树的深度,如果不是,返回false;思路对头节点head...原创 2019-01-01 13:41:43 · 387 阅读 · 0 评论 -
【二叉树问题】二叉树的序列化和反序列化
程序中二叉树在内存中,有些时候希望用文件的形式把二叉树记录下来二叉树的序列过程:二叉树->字符串二叉树的反序列过程:字符串-> 二叉树二叉树的序列化二叉树的序列化方式有以下几种:1、根据先序遍历序列化2、根据中序遍历序列化3、根据后序遍历序列化4、按层遍历序列化:队列题目给定一个二叉树的头节点head,已知二叉树的节点值类型为32位整型,请设计一...原创 2019-01-01 09:24:30 · 171 阅读 · 0 评论 -
【二叉树问题】二叉树层级打印
题目给定二叉树的头结点,按层级打印二叉树节点值。思路从上到下按层遍历,应该是先遍历到的节点先输出。因此用队列作为辅助结构来解此题。层级遍历中关键点要知道什么时候换层。用两个变量last 和nlast,分别指向当前层的最右边和下一层的最右边节点。当当前层的最右边节点从队列中输出时,表示这一层遍历完毕了,此时使last节点直接指向下层的最右端节点,即last = nlast;如何记...原创 2019-01-01 08:21:39 · 798 阅读 · 0 评论 -
【二叉树问题】非递归进行二叉树的前序、中序、后序遍历
目录非递归实现二叉树的前序遍历非递归实现二叉树的中序遍历非递归实现二叉树的后序遍历代码实现用非递归方法进行二叉树的前序、中序、后序遍历,要对从上到下遍历过的节点进行存储,再根据相关条件循环限制输出,因此要用到额外数据结构——栈,栈弹出元素的顺序即为对应的遍历顺序非递归实现二叉树的前序遍历1、将根节点压入栈中2、栈不为空时,弹出栈顶元素temp,如果temp的右子树节...原创 2018-12-31 14:30:38 · 241 阅读 · 0 评论 -
【剑指offer 8-二叉树】有父节点指针的二叉树,求某结点的后继节点(中序遍历的下一个节点)
题目给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针。知识点一个节点的后继节点是指,这个节点在中序遍历序列中的下一个节点。给定一棵二叉树:中序遍历结果为{4,7,2,1,5,3,8,6}再给一个数,求该节点中序遍历中的下一个节点。根据中序遍历的性质,如果给定的节点有右子树,该节点的下一...原创 2019-01-19 20:45:48 · 788 阅读 · 0 评论