第五章小结

树的基本概念:

树的度—— 树中最大的结点度数
双亲—— 孩子结点的上层结点叫该结点的双亲
兄弟—— 同一双亲的孩子之间互成为兄弟
祖先—— 结点的祖先是从根到该结点所经分支上的所有结点
子孙—— 以某结点为根的子树中的任一结点都成为该结点的子孙
结点的层次—— 从根结点算起,根为第一层,它的孩子为第二层……
堂兄弟—— 其双亲在同一层的结点互称为堂兄弟。
深度—— 树中结点的最大层次数
有序树—— 如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。
森林—— m(m>=0)棵互不相交的树的集合

二叉树重要概念:

(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。 

(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层的二叉树,。

(3)深度——二叉树的层数,就是高度。

性质:

(1) 在二叉树中,第i层的结点总数不超过2^(i-1);

(2) 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;

(3) 对于任意一棵二叉树,其所有的叶结点数为:N0,而度为2的所有结点的数量为:N2,则:N0=N2+1;

(4) 具有n个结点的完全二叉树的深度为int(log2n)+1

(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:

若I为结点编号则 如果I<>1,则其父结点的编号为I/2;

如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;

如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。

 

二叉树遍历

先序递归遍历:

public void pre_order_traversal_recursion_way(Node root) {
        if (root == null) {
            return;
        }
        out.print(root.data + " ");
        pre_order_traversal_recursion_way(root.left);
        pre_order_traversal_recursion_way(root.right);
    }

中序递归遍历:

void mid_order_traversal_recursion_way(Node root){
        if(root == null){
            return;
        }
        mid_order_traversal_recursion_way(root.left);
        out.print(root.data+" ");
        mid_order_traversal_recursion_way(root.right);
    }

后序递归遍历:

void post_order_traversal_recursion_way(Node root){
        if(root == null){
            return;
        }
        post_order_traversal_recursion_way(root.left);
        post_order_traversal_recursion_way(root.right);
        out.print(root.data+" ");
    }

  目标:

完成实践二

 

posted @ 2019-05-04 18:24  ZZHHH  阅读(129)  评论(1编辑  收藏  举报