b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

实现二叉排序树 了解数据结构与算法:线性表(数组,链表)、栈、树(二叉树,A(4)

电脑杂谈  发布时间:2018-01-09 07:16:20  来源:网络整理

(1) 先序遍历 若二叉树为空,则空操作,否则先访问根节点,再先序遍历左子树,最后先序遍历右子树。 (2) 中序遍历 若二叉树为空,则空操作,否则先中序遍历左子树,再访问根节点,最后中序遍历右子树。(3) 后序遍历 若二叉树为空,则空操作,否则先后序遍历左子树访问根节点,再后序遍历右子树,最后访问根节点。

给定二叉树写出三种遍历结果

树和二叉树的区别

(1) 二叉树每个节点最多有2个子节点,树则无限制。 (2) 二叉树中节点的子树分为左子树和右子树,即使某节点只有一棵子树,也要指明该子树是左子树还是右子树,即二叉树是有序的。 (3) 树决不能为空,它至少有一个节点,而一棵二叉树可以是空的。

上面我们主要对二叉树的相关概念进行了介绍,下面我们将从二叉查找树开始,介绍二叉树的几种常见类型,同时将之前的理论部分用代码实现出来。

二叉查找树

定义

二叉查找树就是二叉排序树,也叫二叉搜索树。二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: (1) 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2) 若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3) 左、右子树也分别为二叉排序树;(4) 没有键值相等的结点。

典型的二叉查找树的构建过程

性能分析

对于二叉查找树来说,当给定值相同但顺序不同时,所构建的二叉查找树形态是不同的,下面看一个例子。

不同形态平衡二叉树的ASL不同

可以看到,含有n个节点的二叉查找树的平均查找长度和树的形态有关。最坏情况下,当先后插入的关键字有序时,构成的二叉查找树蜕变为单支树,树的深度为n,其平均查找长度(n+1)/2(和顺序查找相同),最好的情况是二叉查找树的形态和折半查找的判定树相同,其平均查找长度和log2(n)成正比。平均情况下,二叉查找树的平均查找长度和logn是等数量级的,所以为了获得更好的性能,通常在二叉查找树的构建过程需要进行“平衡化处理”,之后我们将介绍平衡二叉树和红黑树,这些均可以使查找树的高度为O(log(n))。

代码10 二叉树的节点

class TreeNode {

E element;
TreeNode<E> left;
TreeNode<E> right;

public TreeNode(E e) {
    element = e;
}

}

二叉查找树的三种遍历都可以直接用递归的方法来实现:

代码12 先序遍历

protected void preorder(TreeNode root) {

if (root == null)
    return;

System.out.println(root.element + " ");

preorder(root.left);

preorder(root.right);

}

代码13 中序遍历

protected void inorder(TreeNode root) {

if (root == null)
    return;

inorder(root.left);

System.out.println(root.element + " ");

inorder(root.right);

}

代码14 后序遍历

protected void postorder(TreeNode root) {

if (root == null)
    return;

postorder(root.left);

postorder(root.right);

System.out.println(root.element + " ");

}

代码15 二叉查找树的简单实现

/**

* @author JackalTsc

*/

public class MyBinSearchTree


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-59257-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...