二叉樹的一些問題

時間 2022-06-08 12:50:05

1樓:雨曄

答案正確啊,如下圖

/*經改正後能正常執行,無限輸入主要是由於scanf引起的詳細請看

注意構建樹的輸入順序

比如要構建

``````1

`````2``5

``3``4

這棵樹,則輸入應為1-2-3-!-!-4-!-!-5-!-! */#include "stdio.h"

#include "malloc.h"

#define maxsize 100

typedef char elemtype;

typedef struct bitnodeelemtype data;

struct bitnode *lchild, *rchild;

} bitnode;

bitnode *root;

bitnode* createbittree()elemtype ch;

bitnode *t;

printf("請輸入節點字元,!為空樹:");

scanf("%c",&ch);

fflush(stdin);//清除乙個輸入流if (ch=='!')

t=null;

else

t=(bitnode *)malloc(sizeof(bitnode));

t->data=ch;

t->lchild=createbittree();

t->rchild=createbittree();

return t;

void inorder(bitnode *head)bitnode *t=null;

t=head;

if(t)

inorder(t->lchild);

printf("%c\t",t->data);

inorder(t->rchild); //這裡寫錯了,原來是inorder(t->lchild);

void main()

bitnode *b;

b=createbittree();

inorder(b);

2樓:涵下貴

程式不停地讓你輸入是因為你的「空樹」標記是'!',而一直沒有遇到'!'所致;

但為什麼會一直沒有遇到'!',那是因為它把你輸入時敲進的回車符'\n'也當作乙個樹的data儲存起來了,所以要讓程式正確,必須每次在scanf的時候也把你敲的回車符也讀掉:

#include "stdio.h"

#include "malloc.h"

#define maxsize 100

typedef char elemtype;

typedef struct bitnodebitnode;

bitnode *root;

bitnode* createbittree()else

return t;

}void inorder(bitnode *head)}main()

執行試試吧,因該ok了。

3樓:

呵呵,要記住輸入的時候不能完全按先序序列來,單純由先序序列是不能確定一棵二叉樹的,比如對於一棵根為a,左子樹為b,右子樹為c的二叉樹,你得輸入ab!!c!!

關於二叉樹,高分!二叉樹!!!

這些函式都挺好編的,只是在建立的時候我是用先序遞迴建的樹,不知道可不可以。二叉樹!二叉樹是否這樣的,如果是,那答案沒問題的,不然傳一張圖上來 二叉樹問題 先解釋為什麼d對,因為二叉樹的二叉鍊表儲存時,鍊表中的每個結點包含兩個指標,分別指向結點的左孩子和右孩子。而樹的鍊表儲存時,鍊表中的結點的兩個指標...

什麼是二叉樹,舉二叉樹的例子,什麼是二叉樹,舉一個二叉樹的例子

二叉樹樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資...

平衡二叉樹的問題,平衡二叉樹 資料結構問題? 50

圭旻陰安夢 這個問題的中文意思是 任何一個平衡二叉樹,如果它總共有16個結點,那麼它的 最大 深度是多少?解答 我用星號表示結點 平衡二叉樹是這樣的二叉樹 它的左右子樹都是平衡二叉樹,且兩者深度之差不超過1 圖1每個父結點度有左右兩個子結點 答案 a 1.平衡二叉樹解決的是動態問題,靜態的查詢無需平...