<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

        

    樹的特點:

    1. 每個結點有零個或多個子結點
     
    2. 每一個子結點只有一個父結點

    3. 沒有前驅的結點為根結點

    4. 除了根結點外,每個子結點可以分為m個不相交的子樹

     

    樹相關的術語:

    節點的度:一個節點含有的子樹的個數稱為該節點的度

    葉節點或終端節點:度為零的節點稱為葉節點


    非終端節點或分支節點
    :度不為零的節點


    雙親節點或父節點
    :若一個結點含有子節點,則這個節點稱為其子節點的父節點


    孩子節點或子節點
    :一個節點含有的子樹的根節點稱為該節點的子節點


    兄弟節點
    :具有相同父節點的節點互稱為兄弟節點


    樹的度
    :一棵樹中,最大的節點的度稱為樹的度


    節點的層次
    :從根開始定義起,根為第1層,根的子節點為第2層,以此類推

    樹的高度或深度:樹中節點的最大層次


    堂兄弟節點
    :雙親在同一層的節點互為堂兄弟


    節點的祖先
    :從根到該節點所經分支上的所有節點

    子孫:以某節點為根的子樹中任一節點都稱為該節點的子孫

    森林:由mm>=0)棵互不相交的樹的集合稱為森林

     

    二叉樹 是每個節點最多有兩個子樹的樹結構,如上圖。

     


    /**
     * <!--
     * File   : binarytree.h
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     
    */
    #include 
    <stdio.h>
    #include 
    <stdlib.h>
    #include 
    <malloc.h>
    #define Element char
    #define format "%c"

    typedef 
    struct Node {
        Element data;
        
    struct Node *lchild;
        
    struct Node *rchild;
    *Tree;

    int index = 0;  //全局索引變量

    //二叉樹構造器,按先序遍歷順序構造二叉樹
    //無左子樹或右子樹用'#'表示
    void treeNodeConstructor(Tree &root, Element data[]){
        Element e 
    = data[index++];
        
    if(e == '#'){
            root 
    = NULL;
        }
    else{
            root 
    = (Node *)malloc(sizeof(Node));
            root
    ->data = e;
            treeNodeConstructor(root
    ->lchild, data);  //遞歸構建左子樹
            treeNodeConstructor(root->rchild, data);  //遞歸構建右子樹
        }
    }

    //先序遍歷二叉樹
    void preorderTraversal(Tree root){
        
    if(root){
            printf(format, root
    ->data);
            preorderTraversal(root
    ->lchild);
            preorderTraversal(root
    ->rchild);
        }
    }

    //中序遍歷二叉樹
    void inorderTraversal(Tree root){
        
    if(root){
            inorderTraversal(root
    ->lchild);
            printf(format, root
    ->data);
            inorderTraversal(root
    ->rchild);
        }
    }

    //后序遍歷二叉樹
    void postorderTraversal(Tree root){
        
    if(root){
            postorderTraversal(root
    ->lchild);
            postorderTraversal(root
    ->rchild);
            printf(format, root
    ->data);
        }
    }
         

     


    /**
     * <!--
     * File   : BinaryTree.cpp
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     
    */
    #include 
    "binarytree.h"

    int main() {

        
    //上圖所示的二叉樹先序遍歷序列,其中用'#'表示結點無左子樹或無右子樹
        Element data[23= {'-''+''a''#''#''*''b''#''#''-''c',
                            
    '#''#''d''#''#''/''e''#''#''f''#''#'};
        Tree tree;
        treeNodeConstructor(tree, data);
        printf(
    "------------------------------------\n");
        printf(
    "\nCreate binary tree successfully!\n");
        printf(
    "\n------------------------------------");
        printf(
    "\n\n先序遍歷二叉樹結果: ");
        preorderTraversal(tree);
        printf(
    "\n\n中序遍歷二叉樹結果: ");
        inorderTraversal(tree);
        printf(
    "\n\n后序遍歷二叉樹結果: ");
        postorderTraversal(tree);
        system(
    "pause");
        
    return 0;

    }
        


     



      
    posted on 2013-02-03 11:11 fancydeepin 閱讀(1893) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱码无码永久不卡在线| 免费大黄网站在线观| 亚洲精品一品区二品区三品区| 欧洲亚洲综合一区二区三区| 亚洲成a人片77777kkkk| 亚洲国产精品久久人人爱| 亚洲欧美日韩国产成人| 毛片免费在线视频| 亚洲精华国产精华精华液网站| 国内精品免费视频自在线| 免费观看的毛片手机视频| 国产91免费在线观看| 亚洲综合男人的天堂色婷婷| 亚洲啪啪免费视频| 亚洲国产精品张柏芝在线观看| 51在线视频免费观看视频| 日韩中文字幕在线免费观看| 亚洲人成无码网站| 亚洲s码欧洲m码吹潮| 国产猛烈高潮尖叫视频免费| 亚洲综合激情六月婷婷在线观看| 99在线热视频只有精品免费| 亚洲精品国产肉丝袜久久| 成人a视频片在线观看免费| 七次郎成人免费线路视频 | 69影院毛片免费观看视频在线| 亚洲欧洲日产国码www| 手机看片久久国产免费| 中文成人久久久久影院免费观看| 性色av免费观看| 一级特黄aaa大片免费看| 国产成人亚洲精品青草天美| 麻豆一区二区免费播放网站| 亚洲综合婷婷久久| 毛片a级毛片免费播放下载| 亚洲免费一区二区| 亚洲日本在线播放| 亚洲精品高清在线| 毛片免费观看的视频在线| 免费播放在线日本感人片| 亚洲日韩国产二区无码|