首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

满二叉树的建立有关问题

2012-03-30 
满二叉树的建立问题如何用C语言建立一个满二叉树啊,我发现这个递归的思想我有些不懂,哪位高手能不能把代码

满二叉树的建立问题
如何用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();} 

热点排行