数据结构C语言二叉树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构C语言二叉树相关的知识,希望对你有一定的参考价值。
写了个代码总不能运行,但找不出错,求大佬给看看
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
char data;
struct BiTNode *lchild, *rchild;//左右孩子指针
BiTNode, *BiTree;
int CreateBiTree(BiTree T)
//按先序次序输入二叉树中的结点的值(一个字符),空格字符表示空数
//构造二叉链表表示的二叉树t
char ch;
scanf("%c",&ch);
if (ch == '#') T = NULL;
else
if (!(T = ((BiTNode *)malloc(sizeof(BiTNode)))));
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
return 0;
void PreOrderTraverse(T)
if (T)
printf("%c", T->data);
if (T.lchild)
PreOrderTraverse(T->lchild);
if (T->child)
PreOrderTraverse(T->rchild);
//前序遍历并输出节点值
void InOrderTraverse(T)
if (T)
if (T->lchild)
InOrderTraverse(T->child);
printf("%c", T->data);
if(T->rchild)
InOrderTraverse(T->rchild)
//中序遍历并输出节点数据
void PostOrderTraverse(T)
if (T)
if (T->lchild)
PostOrderTraverse(T->lchild);
if(T->rchild)
PostOrderTraverse(T->rchild);
printf("%d",T->data)
int main
BiTree T;
CreateBiTree(&T);
PreOrderTraverse(&T);
InOrderTraverse(T);
PostOrderTraverse(T);
return 0;
递归实际就是一种深度优先的算法
而层次遍历实际是广度优先的遍历算法,所以递归不适用
比如假设有递归算法,现遍历i层的开始,对i层第一个元素遍历后需调用递归函数遍历其孩子,递归调用完成后才继续遍历i层第二个元素,这样就不是层次遍历了 参考技术B 先序序列不能确定一颗树,题意不清。程序里面,需要将生成的新节点挂到父节点。大致是,建立树后返回节点,挂到根部。
以上是关于数据结构C语言二叉树的主要内容,如果未能解决你的问题,请参考以下文章