前言:
之前写过一篇关于二叉搜索树的博客:Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作
二叉查找树重要性质:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
如图:
这次我想分享的是二叉搜索树中节点是如何删除的,删除节点是二叉搜索树...
分类:
编程语言 时间:
2015-07-02 14:11:46
阅读次数:
190
二叉查找树,也称二叉排序树,二叉搜索树。
它或者是一棵空树;或者是具有下列性质的二叉树:
若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
左、右子树也分别为二叉排序树
查找操作步骤:
若根结点的关键字值等于查找的关键字,成功。
否则,若小于根结点的关键字值,递归查左子树;若大于根结点的关键字值,递归查右子树。
若子树为空...
分类:
其他好文 时间:
2015-06-27 16:26:58
阅读次数:
140
题目链接:BZOJ - 2212题目分析子树 x 内的逆序对个数为 :x 左子树内的逆序对个数 + x 右子树内的逆序对个数 + 跨越 x 左子树与右子树的逆序对。左右子树内部的逆序对与是否交换左右子树无关,是否交换左右子树取决于交换后 “跨越 x 左子树与右子树的逆序对” 是否会减小。因此我们要求...
分类:
其他好文 时间:
2015-06-25 10:18:01
阅读次数:
151
定义:平衡二叉树或为空树,或为如下性质的二叉排序树: (1)左右子树深度之差的绝对值不超过1; (2)左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度.平衡二叉树每个结点的平衡因子只能是1,0,-1。若其绝对值超过1,则该二叉排序树就是不平衡的。如图所示为平衡树和非平衡树示意图:二、...
分类:
其他好文 时间:
2015-06-22 19:12:07
阅读次数:
137
1. 问题描述 计算完全二叉树的节点数。对于完全二叉树的定义可参考wikipedia上面的内容。2. 方法与思路 最简单也最容易想到的方法就是使用递归,分别递归计算左右子树的节点数的和。但此方法最容易超时,一般不可取。
int countNodes(TreeNode* root) {
if(root == NULL) return 0;
else if(ro...
分类:
其他好文 时间:
2015-06-22 16:31:48
阅读次数:
417
1.问题描述 交换二叉树的左右子树。
2. 方法思路 直接递归交换左右子树即可,c代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };...
分类:
其他好文 时间:
2015-06-20 00:22:52
阅读次数:
190
题目:输入两个二叉树A和B,判断B是不是A的子结构。思路:遍历A树找到B树的根节点,然后再判断左右子树是否相同。不相同再往下找。重复改过程。子结构的描述如下图所示:C++代码:#includeusing namespace std;struct BinaryTreeNode{ int ...
分类:
其他好文 时间:
2015-06-18 14:58:26
阅读次数:
155
一、定义
二叉树也叫二分树,是有限节点的集合,这个集合要么为空,要么是由一个根节点和两颗互不相交的称为左子树和右子树的二叉树组成。
注意:二叉树和度为2的树(2次树)是不同的,其差别在:1、度为2的树中至少有一个节点的度为2,而二叉树没有这个要求;2、度为2的树不区分左右子树,而二叉树是严格区分左右子树的。
满二叉树:如果所有分支节点都有左右孩子,并且叶子...
分类:
其他好文 时间:
2015-06-16 14:45:50
阅读次数:
104
在本系列的第一篇文章中,已经介绍过了二叉查找树的一些性质:
节点的左子树中任意节点值小于根节点节点的右子树中任意节点值大于根节点左右子树都必须是二叉查找树,不允许存在重复节点。
基于上面的这些性质,自然的就得到了这种判断方式:树中的每个节点都有一个特定的值。
假设树的节点定义为:
struct Node
{
int key;
Node...
分类:
其他好文 时间:
2015-06-16 01:21:58
阅读次数:
119
输入一个二叉树,输出其镜像。
如下图,即交换所有节点的左右子树。
这里提供两种思路:使用递归和不使用递归。
使用的二叉树定义如下:
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public Tr...
分类:
其他好文 时间:
2015-06-16 00:00:56
阅读次数:
811