Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its struc…
分类:二叉树面试算法
用数组创建二叉树的一种方法
很多面试题都是二叉树相关的, 因此经常需要测试自己的写的程序, 那么创建二叉树就必不可少, 用数组中的值初始化二叉树是一种比较简单的方法. typedef struct BSTreeNode{int m_nValue;s…
二叉树的任意两节点间的最大距离
1.问题定义 如果我们把二叉树看成一个图,父子结点之间的连线看成是双向的,我们姑且定义“距离”为两节点之间边的个数。 写一个程序求一棵二叉树中相距最远的两个结点之间的距离 2.解法 计算一个二叉树的最大距离无外乎两种情况…
完全二叉树叶子结点的算法
如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。 可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总…
经典算法学习——求二叉树的高度
二叉树是一种递归定义的数据结构,我们对它做的几乎所有的操作都是递归的。求树的高度也是如此。分别求左右子树的高度,然后取较长的子树作为高度。代码上传至 https://github…
【算法题】遍历二叉树的所有左叶子节点,求其值之和
题目描述: leetcode 404. Sum of Left Leaves: Find the sum of all left leaves in a given binary tree. Example: 3 / \…
数据结构与算法学习笔记——二叉树重构(递归)
关于二叉树的另外一个重要内容就二叉树的重构,二叉树的重构就是根据已知的二叉树前序,中序,后续遍历的数组重新构造出园二叉树。 对于普通的二叉树可以由 前序遍历+中序遍历 或者 后序遍历+中序遍历 重构(注意:二叉树各节点不…
【POJ1330】最近公共祖先(LCA):并查集+深搜
最近公共祖先(LCA)问题常见于各种面试题中,针对不同情况算法也不尽相同。 情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。 如果该二叉树是二叉查找树,那么求解LCA十分简单。 基本思想为:从树根…
算法之二叉树各种遍历
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二…
【刷算法】重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,…
java实现简单的二叉树
二叉排序树,平衡二叉树,红黑树都是在普通二叉树的基础上构建的,所以很有必要学习一下二叉树。 二叉树的遍历: 1:先序遍历(DLR) 1):访问根节点; 2):按先序遍历访问左子树 …