[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mlV0bMVS-1570796949466)(54AD0BFFBFBAE822E913A954B8931C79.png)] 十进制整数转化成…
分类:树相关算法
(剑指Offer)面试题6:重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 假设输入的前序遍历和中序遍历结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,…
(剑指Offer)面试题39:判断平衡二叉树
题目: 输入一课二叉树的根结点,判断该树是不是平衡二叉树。如果二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 思路: 1、重复遍历结点 参考上一题求二叉树的深度,先求出根结点的左右子树的深度,然…
(剑指Offer)面试题50:树中两个结点的最低公共祖先
题目: 求树中两个结点的最低公共祖先 思路: 考虑一下几种情况: 1、该树为二叉搜索树 二叉搜索树是排序树,位于左子树点的结点都比父结点小,而位于右子树的结点都比父结点大,只需要从树的根结点开始和两个输入的结点进行比较。…
(剑指Offer)面试题60:把二叉树打印成多行
题目: 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路: 很明显,采用广度优先遍历来解决,但因为需要按行输出,所以需要判断每一层的开始和结束,因此需要两个变量,一个表示当前层尚未打印的结点数,一个…
(剑指Offer)面试题27:二叉搜索树与双向链表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 二叉树的定义如下: struct TreeNode{ int val; TreeNode* le…
(剑指Offer)面试题58:二叉树的下一个结点
题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路: 考虑中序遍历的过程, 如果当前结点存在右子节点,那么当前结点的下一个…
(算法)是否为二叉查找树的后序遍历数组
题目: 给定一数组,判断它是否为二叉查找树的后序遍历数组 思路: 想想,二叉查找数树的特点,任意根结点大于左子树的所有值,而小于右子树的所有值; 再想想,后序遍历的特点,先遍历左子树,再遍历右子树,最后是根结点; 因此很…
(剑指Offer)面试题24:二叉搜索树的后序遍历序列
题目: 输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。 假设输入的数组的任意两个数字都互不相同。 思路: 根据二叉搜索树的后序遍历特点,很容易可以判断该数组是…
(算法)二叉树的第m层第k个节点
题目: 给定以下二叉树: struct node { node *left, *right; int value; }; 要…