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.平衡二叉樹解決的是動態問題,靜態的查詢無需平...