c语言建树代码,高手进

Python017

c语言建树代码,高手进,第1张

给你我以前写好的程序,你参考下吧

#include<iostream>

using namespace std

struct BTree

{char data

BTree*lchild,*rchild

}

void PreOrderTraverse( BTree *T ) {//先序.

if(T){

cout<<T->data

PreOrderTraverse(T->lchild)

PreOrderTraverse(T->rchild)

}

} // PreOrderTraverse

void InOrderTraverse( BTree *T ) {//中序.

if(T){

InOrderTraverse(T->lchild)

cout<<T->data

InOrderTraverse(T->rchild)

}

} // InOrderTraverse

void PosOrderTraverse( BTree *T ) {//后序.

if(T){

PosOrderTraverse(T->lchild)

PosOrderTraverse(T->rchild)

cout<<T->data

}

} // PosOrderTraverse

BTree *CreateBiTree(BTree *T)

{

char ch

ch=getchar()

if(ch=='#')T=NULL

else{

if(!(T=(BTree *)malloc(sizeof(BTree))))exit(0)

T->data =ch

T->lchild=CreateBiTree(T->lchild)

T->rchild=CreateBiTree(T->rchild)

}

return T

}

void main()

{ cout<<"请输入先序二叉树,没有左右孩子的用#表示"<<'\n'

BTree *t=CreateBiTree(t)

cout<<"先序"<<'\n'

PreOrderTraverse( t )

cout<<'\n'<<"中序"<<'\n'

InOrderTraverse( t )

cout<<'\n'<<"后序"<<'\n'

PosOrderTraverse( t )

cout<<'\n'

}

#include"stdio.h"

#include"malloc.h"

typedef struct bitnode

{

char data

struct bitnode *lchild,*rchild

}bintnode,*bintree

bintree createbitree()

{

bintree t

char ch

scanf("%c",&ch)

if(ch==' ')

t=NULL

else

{

t=(bintnode *)malloc(sizeof(bintnode))

t->data=ch

t->lchild=createbitree()

t->rchild=createbitree()

}

return(t)

}

这就是建树的函数 要实现什么你自己在写。。。

完整程序自己写吧,我提供个思路:

二叉树的节点包含三个指针:左指针,右指针,字符串链表的头指针;

构造一个通过两个字符串的头指针比较字符窜大小的函数;(先比较串长,再从头对位开始比较);

构造一个插入函数(递归

最后查找函数(递归)返回查找元素距根的距离;