什么是二叉排序树:二叉排序树或者是一颗空树,或者具有以下性质的二叉树:
(1)若它的左子树不为空,则左子树上的所有节点的值都小于他的父节点的值;
(2)若它的右子树不为空,则右子树上的所有节点的值都大于他的父节点的值;
(3)它的左右子树也分别为二叉排序树;
java实例:
package com.test.linked;
public class HeapSort {
publi...
分类:
编程语言 时间:
2015-04-25 13:45:51
阅读次数:
112
求从根节点到叶子节点的最短路径。【思路】开始想到返回左右子树最短深度,测试发现对于一个根节点带一个孩子节点,其最短路径是2,不是最小深度1,此种特殊情况单独列出。【my code】int minDepth(TreeNode *root) { if(root==NULL) ...
分类:
其他好文 时间:
2015-04-24 08:56:48
阅读次数:
114
判断一棵树是否是平衡树。平衡数的意思是,树左右子树高度之差不能超过1.【思路】递归判断每个子树是否是平衡数,需要调用高度计算的函数。【my code】bool isBalanced(TreeNode *root) { if(root==NULL) return t...
分类:
其他好文 时间:
2015-04-23 17:17:21
阅读次数:
181
树型结构是一类重要的非线性数据结构,其中二叉树较为常用。二叉树的特点的每个节点至多只有两棵子树(寄即二叉树中不存在大于2的节点),并且二叉树有左右子树之分。
二叉树的属性:
1、二叉树有5种基本形态,(a)空二叉树 (b)仅有根节点的二叉树 (c) 右子树为空的二叉树 (d)左右子树均为非空的二叉树(e)左子树为空的二叉树
二叉树的性质;
性质1 在二叉树的第 i 层...
分类:
其他好文 时间:
2015-04-23 09:39:33
阅读次数:
104
反转二叉树,即交换所有结点的左右子树,但不能使用递归方法。
解析:既然不能使用递归那么可以使用栈,代码如下:
#include
#include
#include
#include
#include
using namespace std;
typedef struct BinaryTreeNode
{
int m_nValue;
Bin...
分类:
其他好文 时间:
2015-04-22 11:49:04
阅读次数:
216
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这道题要求根据一个有序的数组建立一棵二叉排序树。利用折半的思想,构造根节点,再递归构造左右子树。递归出口是数组中只含一个元素。TreeNode *sortedArrayToBST(vector &...
分类:
其他好文 时间:
2015-04-14 21:34:22
阅读次数:
98
思路:当遇到一个结点是返回1,当左右子树都返回1的时候,即最小公共父节点。//二叉树的数据结构
typedef struct MyStruct
{
char data;
struct MyStruct *leftChild;
struct MyStruct *rightChild;
}Node, *Tree;
//查找方法
int findFirstFather(Tree r...
分类:
其他好文 时间:
2015-04-14 02:02:27
阅读次数:
165
题目:http://ac.jobdu.com/problem.php?pid=1385思路:前序遍历结果的第一个数字就是根节点,找到根节点在中序遍历中的位置,则该位置左边的即为左子树的中序遍历的结果。显然我们很容易就可以得到左右子树的前序和中序遍历结果,我们可以使用递归来构建。小知识:preorde...
分类:
其他好文 时间:
2015-04-08 12:25:26
阅读次数:
124
思路:
走了好多弯路,最后才发现直接根据定义来就可以了,左右子树的深度不超过1且左右子树都是平衡二叉树,就是这么简洁明快。...
分类:
其他好文 时间:
2015-04-03 17:32:35
阅读次数:
128
思路:
1.将中序遍历序列和其对应的下标存储到一个map中,方便下面的查找
2.递归选取前序序列的第一个元素作为树的根节点,然后查找根节点在前序序列中位置inorderIndex,inorderIndex-startInorder可以得到左子树的长度
3.根据左子树的长度和startPreOrder可以求出前序序列中左子树的起始位置
4.从上面可以求出左右子树的前序序列和中序序列的起始位置,递归调用建树过程即可。
PS:其实,对于这道题,有更简单的方法,可根据按前序序列元素出现的顺序依次作为树的根节点进行...
分类:
其他好文 时间:
2015-04-03 15:17:20
阅读次数:
133