创建二叉树,C语言实现
2014-03-05 11:09
267 查看
#ifndef BITREE_H #define BITREE_H #include<stdio.h> #include<stdlib.h> typedef char ElementType; typedef struct treenode { ElementType data; struct treenode *leftchild; struct treenode *rightchild; } TreeNode; /*使用先序遍历创建二叉树*/ TreeNode *create_bitree() { ElementType ch; TreeNode *T; scanf("%c",&ch); //这样调用scanf时,树的结点一次全部输入,如果要一次一个的输入,在%c前加个空格 if(ch!='#') { T=(TreeNode*)malloc(sizeof(TreeNode)); T->data=ch; T->leftchild=create_bitree(); T->rightchild=create_bitree(); } else { T=NULL; } return T; } /*先序遍历*/ void pre_order_traversal(TreeNode *T) { ElementType data; if(T!=NULL) { data=T->data; printf("%c ",data); pre_order_traversal(T->leftchild); pre_order_traversal(T->rightchild); } } #endif
有两个地方需要注意:1、要将树的节点指针作为返回值返回,而不能向下面这样直接作为参数传入,因为作为参数传递时只是传递了T 的一个copy,后来调用malloc函数分配新的内存地址时,也是赋给了这个备份,也就是说最后T依然没有改变,碰到malloc和指针做参数都要注意这个问题;2、scanf函数的问题:scanf会读入回车符,当需要一个一个的输入字符时,可以在%c前面加个空格
int create_bitree(TreeNode *T;) { ElementType ch; scanf("%c",&ch); //这样调用scanf时,树的结点一次全部输入,如果要一次一个的输入,在%c前加个空格 if(ch!='#') { T=(TreeNode*)malloc(sizeof(TreeNode)); T->data=ch; create_bitree(T->leftchild); create_bitree(T->rightchild); } else { T=NULL; } return 1; }
相关文章推荐
- c语言实现二叉树的遍历和创建程序(附带注释)
- 二叉树的创建、前/中/后序遍历、按层遍历C语言实现
- 二叉树的创建和遍历-C语言实现
- 创建二叉树,C语言实现
- 二叉树的创建与遍历(C语言实现)
- 二叉树创建、遍历、求深度--C语言实现
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树的创建、前序中序后序递归遍历与非递归遍历、层序遍历以及二叉树简单应用的C语言实现
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- 二叉搜索树的创建、插入、删除和查找的C语言实现
- 打印菜单界面,用c语言实现二叉树的基本操作
- C语言二叉树的各种功能的实现
- C语言实现二叉树的基本操作
- 二叉树的创建及各方法实现
- C++ 二叉树实现 创建,先序遍历,中序遍历,后序遍历
- c语言实现正序链表的创建(不使用头结点)
- C语言实现链表的创建、计算链表长度及两个链表的合并
- C语言实现基本数据结构之二叉树