读书人

满二叉树的建立有关问题

发布时间: 2012-03-30 17:32:09 作者: rapoo

满二叉树的建立问题
如何用C语言建立一个满二叉树啊,我发现这个递归的思想我有些不懂,哪位高手能不能把代码和详细的注释以及图发过来,我很想搞懂这个问题,求赐教。。

[解决办法]

C/C++ code
#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];


[解决办法]
更新下代码,前面的代码没法退出
C/C++ code
#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();} 

读书人网 >C语言

热点推荐