满二叉树的建立问题
如何用C语言建立一个满二叉树啊,我发现这个递归的思想我有些不懂,哪位高手能不能把代码和详细的注释以及图发过来,我很想搞懂这个问题,求赐教。。
[解决办法]
#include "stdio.h"#include <stdlib.h>typedef struct node{ char data;//数据域 struct node *left, *right;//左右孩子指针}BtNode;BtNode* CrtTree(){ char ch; BtNode* root; ch = getchar(); if (ch == 32) { return NULL; } root = (BtNode*)malloc(sizeof(BtNode));//建立结点 root->data = ch; //将刚输入的字符作为该结点的内容 root->left = CrtTree();//递归建立左孩子 root->right = CrtTree();//递归建立右孩子 return root;}void main(){ BtNode* pRoot = CrtTree();}
[解决办法]
数组Tree[1...n]
将你的满二叉树结点按从上到下,按从左到右放入到Tree[1...n]
然后对每个下标i,left[i]=Tree[2*i]; right[i]=Tree[2*i+1].
树根root=Tree[1];
[解决办法]
更新下代码,前面的代码没法退出
#include "stdio.h"#include <stdlib.h>typedef struct node{ char data;//数据域 struct node *left, *right;//左右孩子指针}BtNode;BtNode* CrtTree(){ char ch; BtNode* root; fflush(stdin); ch = getchar(); if (ch == 32) { return NULL; } root = (BtNode*)malloc(sizeof(BtNode));//建立结点 root->data = ch; //将刚输入的字符作为该结点的内容 root->left = CrtTree();//递归建立左孩子 root->right = CrtTree();//递归建立右孩子 return root;}void main(){ BtNode* pRoot = CrtTree();}