数据结构——二叉树的实现

来源:互联网 发布:2016年1月非农数据 编辑:程序博客网 时间:2024/04/30 05:52

开始记录关于实现二叉树的代码及疑问

目前尝试成功的部分代码:

// SJJG_SY4.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "malloc.h"//定义返回值#define OK 1#define TURE 1#define ERROR 0#define FALSE 0//定义树的数据类型#define NodeType chartypedef struct TreeNode{    NodeType data;        //结点的数值域    TreeNode *Lchild;     //结点的左孩子    TreeNode *Rchild;     //结点的右孩子}TreeNode,*treenode;      //不带参的create函数treenode CreateTree()     //正序创建树,无传入参数,返回值为一个结点{    treenode t;              t=(treenode)malloc(sizeof(TreeNode));    //动态分配空间    char s;    s=getchar();                             //读取一个字符    if (s=='0') t=NULL;                      //如果为0,则当前结点为空(递归)    else     {        t->data=s;                           //将s的值赋给当前结点        t->Lchild=CreateTree();              //创建t的左孩子,进入递归        t->Rchild=CreateTree();              //创建t的右孩子,进入递归    }    return t;                                //返回新结点t                }//正序输出函数int InOrder(treenode node){    treenode t=node;                         //将参数node的值赋给t    if (t==NULL) return OK;                  //如果t为NULL,则已完全遍历一棵树的枝干,返回OK(递归)    else     {        printf("%c  ",t->data);              //输出该结点的值        InOrder(t->Lchild);                  //进入t结点的左孩子,开始递归        InOrder(t->Rchild);                  //进入t结点的右孩子,开始递归    }    return OK;                               //整棵树输出完毕,返回OK}int main(int argc, char* argv[]){    treenode node;                          //创建一个treenode类型的指针node    node=CreateTree();                      //正序创建以node为根结点的树    InOrder(node);                          //正序输出以node为跟结点的树    return OK;}

此前写了一个带参数的CreateTree函数,但是实际运行中却没有达到应有的效果,在次贴上代码:

//带参的Create函数int CreateTree(treenode node){    treenode t;    t=(treenode)malloc(sizeof(TreeNode));    char s;    s=getchar();    if (s=='0') {t=NULL; return OK;}    else         t->data=s;        CreateTree(t->Lchild);        CreateTree(t->Rchild);        node=t;        putchar(node->data);    return OK;}//正序输出函数int InOrder(treenode node){    treenode t=node;    if (t==NULL) return OK;    else     {        printf("%c  ",t->data);        InOrder(t->Lchild);        InOrder(t->Rchild);    }    return OK;}
0 0
原创粉丝点击