精华内容
下载资源
问答
  • 满二叉树

    2020-01-12 17:24:42
    国内满二叉树定义 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。 性质 1、一个层数为k 的满二叉树总结点数...

    国内满二叉树定义

    一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。

    性质

    1、一个层数为k 的满二叉树总结点数为:因此满二叉树的结点数一定是奇数个。

    2、第i层上的结点数为:

    3、一个层数为k的满二叉树的叶子结点个数(也就是最后一层):

    例图如下

     

    展开全文
  • 自己动手作图深入理解二叉树、满二叉树及完全二叉树,目录一、背景二、基本概念2.1 结点2.2 二叉树2.2.1 二叉树的深度2.3 满二叉树2.4 完全二叉树2.4.1 完全二叉树的线性存储2.4.2 完全二叉树的创建与遍历一、背景...

    自己动手作图深入理解二叉树、满二叉树及完全二叉树,

    目录一、背景

    二、基本概念2.1 结点

    2.2 二叉树2.2.1 二叉树的深度

    2.3 满二叉树

    2.4 完全二叉树2.4.1 完全二叉树的线性存储

    2.4.2 完全二叉树的创建与遍历

    一、背景

    二叉树是数据结构中的重点,也是难点。二叉树是一种非线性结构,比数组、栈、队列等线性结构相比复杂度更高,想要做到心中有“树”,需要自己动手画图、观察、思考,才能领会其真谛。该文将会结合图形,深入理解二叉树、满二叉树及完全二叉树的概念。

    二、基本概念

    2.1 结点

    结点是组成二叉树的最小单元。

    -- 用图形表示

    2acb647eb13ade59fd4cc520095eddcb.png

    -- 用代码表示

    // 结点

    class Node {

    E e;

    Node left, right;

    Node(E e) {

    this.e= e;

    this.left = null;

    this.right = null;

    }

    }

    2.2 二叉树

    每个结点的度(结点拥有的子树数目)不超过2的树叫做二叉树

    0b7985138ee4acb9efbc8086758bc252.png

    2.2.1 二叉树的深度

    结点的最大层次数称为树的深度或高度

    29c841fe2dbc6b79f9d6467513b8e209.png

    2.3 满二叉树

    指深度为k且有2k-1个结点的二叉树,即所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。

    下图中深度为4,24-1=15个结点,且所有叶子都在第四层上。

    cbc586a4f91c956ec56053cfe2dfc531.png

    2.4 完全二叉树

    一颗深度为k的二叉树,k层的结点都是连续靠左并不可隔开的,并且1~k-1层的结点也组成了一棵满二叉树,这样的二叉树,我们称为完全二叉树。

    d458e38c49105594d92c7e362515386e.png

    2.4.1 完全二叉树的线性存储

    出于简便起见,完全二叉树通常采用数组进行线性存储

    be9228d88a72d51983a7f828d74f126b.png

    /**

    * 完全二叉树的线性存储

    *

    * @author zhuhuix

    * @date 2020-06-24

    */

    public class FullBinaryTree {

    private Object[] arr;

    private int size;

    FullBinaryTree(int capacity) {

    this.arr = new Object[capacity + 1];

    this.size = 0;

    }

    public int getSize() {

    return this.size;

    }

    public boolean isEmpty() {

    return this.size == 0;

    }

    public void add(Object e, int index) {

    assert index <= this.arr.length;

    this.arr[index] = e;

    this.size++;

    }

    @Override

    public String toString() {

    return "FullBinaryTree{" +

    "arr=" + Arrays.toString(arr) +

    ", size=" + size +

    '}';

    }

    public static void main(String[] args) {

    FullBinaryTree fullBinaryTree = new FullBinaryTree(26);

    // 从下标1开始存入26个字母

    for (Character c = 'A'; c <= 'Z'; c++) {

    fullBinaryTree.add(c, c - 'A' + 1);

    }

    System.out.println( fullBinaryTree.toString());

    }

    }

    04ee90b2b4b6d9b67c88ecd4df95ebff.png

    2.4.2 完全二叉树的创建与遍历

    /**

    * 完全二叉树的创建与遍历

    *

    * @author zhuhuix

    * @date 2020-06-24

    */

    public class BinaryTree {

    // 结点

    private Node root;

    // 结点数

    private int size;

    // 存放结点

    private ArrayList list;

    public BinaryTree() {

    this.root = null;

    this.size = 0;

    this.list = new ArrayList<>();

    }

    public void createTree(Object[] array){

    for(int i=0;i

    Node node =new Node(array[i]);

    list.add(node);

    if (this.root==null){

    this.root = node;

    }

    }

    if(list.size()>0){

    for(int i=0;i

    if(2*i+1

    list.get(i).left=list.get(2 * i + 1);

    }

    if(2*i+2

    list.get(i).right=list.get(2 * i + 2);

    }

    }

    }

    }

    // 前序遍历

    public void preOrder(Node root){

    if(root == null){

    return ;

    }

    else{

    System.out.println(root.getData());

    }

    preOrder(root.left);

    preOrder(root.right);

    }

    public Node getRoot() {

    return root;

    }

    // 私有内部类-树结点

    private class Node {

    Object data;

    Node left, right;

    Node(Object data) {

    this.data = data;

    this.left = null;

    this.right = null;

    }

    Object getData() {

    return data;

    }

    }

    public static void main(String[] args) {

    BinaryTree binaryTree = new BinaryTree();

    Character[] array ={'A','B','C','D','E','F','G','H','I','J','K','L',

    'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

    binaryTree.createTree(array);

    binaryTree.preOrder(binaryTree.getRoot());

    }

    }

    de6f2905fd65f90baa6e1d4a474a2703.png

    a5be9007b18a01e62f371be8b707ff5b.png

    相关文章暂无相关文章

    展开全文
  • 完全二叉树 满二叉树

    2020-05-03 23:59:36
    完全二叉树 满二叉树 1.定义 ①满二叉树:除最后一层无任何节点外,每一层上的所有节点都有两个子结点的二叉树。 另外的定义:一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,...

    完全二叉树 满二叉树

    1.定义

    ①满二叉树:除最后一层无任何节点外,每一层上的所有节点都有两个子结点的二叉树。

    另外的定义:一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2 ^ k) - 1,则它就是满二叉树。

    ②完全二叉树:完全二叉树是效率很高的数据结构,对于深度为K的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

    ③叶子结点:指出度为0的结点,又称为终端结点。

    在这里插入图片描述

    展开全文
  • 目录二叉树满二叉树完全二叉树 二叉树 度不超过2的树。(每个结点最多有两个子结点) 满二叉树 每一个层的结点树都达到最大值的二叉树。 完全二叉树 叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在...

    二叉树

    每个结点最多有两个子结点的树。
    在这里插入图片描述

    满二叉树

    每一个层的结点数都达到最大值的二叉树。
    在这里插入图片描述

    完全二叉树

    除了最后一层结点不需要满,其它每一层都是满的,如果最后一层不满,要求左满右不满。
    在这里插入图片描述

    展开全文
  • 满二叉树: 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称作满二叉树 完全二叉树: 完全二叉树是一种叶子结点只能出现在最下层和次下层且最下层的...
  • 二叉树递归判断一颗二叉树是不是满二叉树 题目:判断一颗二叉树是不是满二叉树 *分析:所谓满二叉树,无非就是满足在该树中任意一层的节点都是满的。例 如:高度为h的二叉树它的满二叉树的所有节点n满足这样一个公式...
  • 满二叉树与完全二叉树满二叉树定义特点完全二叉树定义特点 满二叉树 定义 在一棵二叉树中,如果所有分支结点都有左、右孩子结点,并且叶子结点都集中在二叉树的最下层,这样的二叉树称为满二叉树。如下图所示就是一...
  • 满二叉树 满足以下两个条件,缺一不可 1 所有分支结点都有左子树和右子树; 2 所有叶子结点在同一层上 如图所示,(a)图就是一棵满二叉树,(b)图则不是满二叉树,因为该二叉树的D,F,G,H,I叶子结点未在同一层上 ...
  • 1.二叉树: 本身是有序树; 树和二叉树的三个主要差别: 树的结点个数至少为1,而二叉树的结点个数可以为0; 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;...树的结点无左、右之分,而...2.满二叉树:...
  • 满二叉树 如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。 图 2 满二叉树示意图 如图 2 所示就是一棵满二叉树满二叉树除了满足普通二叉树的性质,还具有以下性质: 满二叉树中第 ...
  • 满二叉树与完美二叉树 国内的翻译和国外是有些对不上的\ 完美二叉树 英文: Perfect Binary Tree, 有时候在国内就叫满二叉树 除了叶子结点之外的每一个结点都有两个孩子,每一层(当然包含最后一层)都被完全填充 ...
  • 我们都知道满二叉树是分为国际标准和国内标准的,我们在这使用的满二叉树都是沿用国内标准的满二叉树。 深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时,称...
  • 满二叉树 完全二叉树

    2018-03-20 16:54:00
    满二叉树:一颗深度为k且有2^k-1个节点的二叉树称为满二叉树; 完全二叉树:对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左至右。深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度...
  • 满二叉树定义: 高度为k并且有2K+1-1个结点的二叉树 在满二叉树中,每层结点都达到最大数,即每层结点都是满的,因此称为满二叉树。 完全二叉树: 若在一颗满二叉树中,在最下层从最右侧起去掉相邻的若干叶子节点,...
  • 如果一棵二叉树只有度为 0 的结点和度为 2的结点,则这棵二叉树为满二叉树。 三、完全二叉树 三者对比 完美(Perfect)二叉树一定是完全(Complete)二叉树,但完全(Complete)二叉树不一定是完美(Perfect)...
  • 二叉树 二叉树是每个节点最多有两个子树的树结构。二叉树不是树的一种特殊情形,尽管其与树有许多相似之处,但树和二叉 叉树有两个主要差别: 1. 树中结点的最大度数...在满二叉树中,每一层上的结点数都达到最大
  • 二叉树分类很多,其中满二叉树和完全二叉树比较特殊,因为这两种二叉树效率很高,这里记录几条相关性质。 首先是满二叉树:从形象上来说满二叉树是一个绝对的三角形,也就是说它的最后一层全部是叶子节点,其余各层...
  • 满二叉树判定

    2012-04-13 16:02:33
    判断一个给定的二叉树是否为满二叉树。 不考虑空树情况。 注意:空树和只有一个结点的树均是满二叉树
  • 一、满二叉树  一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。) 二、完全二叉树  若设二叉树的深度为k,除第 k 层外,其它...
  • 一颗深度为k且有2^k-1个结点的二叉树称为满二叉树。 说明: 除叶子结点外的所有结点均有两个子结点。所有叶子结点必须在同一层上。 完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都...
  • 满二叉树定义: 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。 也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树 按照教材中的定义举例: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,521
精华内容 17,808
关键字:

满二叉树