19黑马笔记之二叉树的创建
1 思想:一个一个节点的创建,先从根节点开始,若输入为#,则该节点为空;若不是#,则再次调用函数,给该节点创建左右孩子。最后返回该节点。
2 实现代码: 并不是很常用,了解一下即可。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//二叉树结点
typedef struct BINARYNODE{
char ch;
struct BINARYNODE* lchild;
struct BINARYNODE* rchild;
}BinaryNode;
void Recursion(BinaryNode* root){
if (root == NULL){
return;
}
printf("%c",root->ch);
Recursion(root->lchild);
Recursion(root->rchild);
}
BinaryNode* CreateBinaryTree(){
fflush(stdin);
char ch;
scanf("%c",&ch);
BinaryNode* node;
if (ch == '#'){
node = NULL;
}
else{
node = (BinaryNode*)malloc(sizeof(BinaryNode));
node->ch = ch;
node->lchild = CreateBinaryTree();
node->rchild = CreateBinaryTree();
}
return node;
}
int main(void){
//创建树
BinaryNode* root = CreateBinaryTree();
//打印树
Recursion(root);
printf("\n");
system("pause");
return 0;
}