二叉樹的遍歷(C C++及Java算法實現)

二叉樹的遍歷,題目描述:

編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據此字符串建立一個二叉樹(以指針方式存儲)。

例如如下的先序遍歷字符串:

ABC##DE#G##F###

其中“#”表示的是空格,空格字符代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。

輸入:

輸入包括1行字符串,長度不超過100。

輸出:

可能有多組測試數據,對於每組數據,

輸出將輸入字符串建立二叉樹後中序遍歷的序列,每個字符後面都有一個空格。

每個輸出結果佔一行。

樣例輸入:

abc##de#g##f###

樣例輸出:

c b e g d f a

C實現

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  
  
char array[101];  
  
//二叉樹結點  
typedef struct BiTNode{  
    char data;  
    struct BiTNode *lchild,*rchild;  
}BiTNode,*BiTree;  
  
//按先序序列創建二叉樹  
int CreateBiTree(BiTree &T,int &index,int &n){  
    if(index == n){  
        return 0;  
    }  
    //按先序次序輸入二叉樹中結點的值(一個字符),‘#’表示空樹  
    if(array[index] == '#'){  
        T = NULL;  
        index++;  
    }  
    else{  
        T = (BiTree)malloc(sizeof(BiTNode));  
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章