樹4-樹的確定與#號建立
只有中序遍歷不能確定一個樹
確定樹的方法
中序遍歷確定左右區域,而先序和後序確定實際位置
二叉樹的#建立
二叉樹結點
typedef struct BinaryNode{
char ch;
struct BinaryNode *lChild;
struct BinaryNode *rChild;
} BinaryNode;
二叉樹遍歷
void Recursion(BinaryNode *root){
if(root==NULL) return;
cout << root->ch;
Recursion(root->lChild);
Recursion(root->rChild);
}
建立樹
BinaryNode* CreateBinaryTree(){
//清空緩衝區
fflush(stdin);
char ch;
cout << "輸入ch:" ;
cin >> ch;
//當ch為空時, 退出建立
BinaryNode *node;
// BinaryNode *lChild, *rChild;
if(ch=='#'){ //#表示當前結點為NULL
node = NULL;
}else{
// lChild = CreateBinaryTree();
// rChild = CreateBinaryTree();
node = (BinaryNode*)malloc(sizeof(BinaryNode));
node->ch = ch;
node->lChild = CreateBinaryTree();
node->rChild = CreateBinaryTree();
}
return node;
}
測試
int main(void){
//建立樹
BinaryNode *root = CreateBinaryTree();
//遞迴遍歷
Recursion(root);
cout << endl;
// ABCD##P###QH###
system("pause");
return 0;
}