C语言二叉树递归算法怎么做?#include stdio.h
#include string.h
struct treenode{
int value;
treenode* left;
treenode* right;
};
typedef treenode* BiTree;
void visit(treenode* node)
{
printf("- ", node-value);
}
//结点总数
int node(BiTree T)
{
if( !T ){
return 0;
}
return node(T-left)node(T-right)1;
}
//前序
void preOrder(BiTree T)
{
if( T ){
visit(T);
preOrder(T-left);
preOrder(T-right);
}
}
//中序
void inOrder(BiTree T)
{
if( T ){
inOrder(T-left);
visit(T);
inOrder(T-right);
}
}
//后序
void postOrder(BiTree T)
{
if( T ){
postOrder(T-left);
postOrder(T-right);
visit(T);
}
}
//叶子节点数
int leafnode(BiTree T)
{
if( T ){
if( !T-left!T-right )
【c语言以函数二叉树 用c语言设计一个二叉树类的结构】return 1;
else
leafnode(T-left)leafnode(T-right);
}else{
return 0;
}
}
int height(BiTree T)
{
if( T ){
int lh = height(T-left);
int rh = height(T-right);
return (lhrh ? lh:rh)1;
}else{
return 0;
}
}
int main()
{
return 0;
}
用C语言编程实现二叉树的基本操作,并完成下述函数功能: (1) CreateBiTree( ):根据先序遍历序列生成一棵下面有一个建树的例子 。
class TreeNode{
public:
TreeNode *left;
TreeNode *right;
int value;
TreeNode(int v): value(v)
{
left = NULL;
right = NULL;
}
~TreeNode() {
if (left != NULL) delete left;
if (right != NULL) delete right;
}
};
void addToTree(TreeNode *curr, TreeNode *p) {
if(p-value = https://www.04ip.com/post/curr-value) {
if(curr-left == NULL) {
curr-left = p;
return;
}
else addToTree(curr-left, p);
} else {
if(curr-right == NULL) {
curr-right = p;
return;
}
else addToTree(curr-right, p);
}
}
void printTree(TreeNode *p) {
if(p==NULL) return;
printTree(p-left);
printf("%d ", p-value);
printTree(p-right);
}
TreeNode * createBiTree(int[] a, int len)
{
TreeNode *root = new TreeNode(a[0]);
for(int i=1; i5; i) {
TreeNode *p = new TreeNode(a[i]);
addToTree(root, p);
}
return root;
}
void main() {
int a[] = {3, 4, 1, 2, 5};
CreateBiTeee(a, 5);
printTree(root);
delete root;
}
c语言 二叉树bitree *inittree(bitree *bt,int x)
{
bitree *ptr;
ptr=(bitree *)malloc (sizeof(bitree));
ptr-data=https://www.04ip.com/post/x;
ptr-lch=NULL;
ptr-rch=NULL;
if(bt-lch!=NULL)// 此处开始出错 。
bt-lch=ptr;
else
bt-rch=ptr;
return (bt);//返回指针也不对 。
}
函数inbt 中
do
{
语句//出错 。
}while()
关于C语言二叉树!对于你的这种情况我觉得比较适合用数组来实现 。对于长度为t的输入,申请类型为Node、长度为t的数组nodeArray[t],然后进行两次遍历 。
第一次,nodeArray[i].data对应输入的第i个字符,nodeArray[i].lchild和rchild都为空;(如果输入#则nodeArray[i]=null)
第二次,在[0, n-1]的范围内,令nodeArray[i].lchild = (nodeArray[i * 2]) , nodeArray[i].rchild = (nodeArray[i * 21]) 。
完成后 , nodeArray[0]即为所求二叉树 。
应该有办法一次遍历就构造好这棵树,懒得想了 。
二叉树建立中函数定义与运行(C语言)大多数问题是函数名字写错 了 。
#includestdio.h
#includestdlib.h
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBitree(BiTree T);
Status PreOrder(BiTree T);
Status InOrder(BiTree T);
Status CreateBitree(BiTree T)
{
char ch;
scanf("%c",ch);
if(ch=='#')
T=NULL;
else{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T);
exit(OVERFLOW);
T-data=https://www.04ip.com/post/ch;
CreateBitree(T-lchild);
CreateBitree(T-rchild);
}
return OK;
}
Status PreOrder(BiTree T)
{
if(T){
printf("%c",T-data);
PreOrder(T-lchild);
PreOrder(T-rchild);
}
return OK;
}
Status InOrder(BiTree T)
{
if(T){
InOrder(T-lchild);
printf("%c",T-data);
InOrder(T-rchild);
}
return OK;
}
Status PostOder(BiTree T)
{
if(T){
PostOder(T-lchild);
PostOder(T-rchild);
printf("%c",T-data);
}
return OK;
}
int main()
{
BiTree T={'\0'};
printf("先序建树c语言以函数二叉树:依次输入二叉树结点号c语言以函数二叉树,孩子为空时输入空格\n");
CreateBitree(T);
printf("\n先序遍历二叉树为c语言以函数二叉树:");
PreOrder(T);
printf("\n中序遍历二叉树为:");
InOrder(T);
printf("\n后序遍历二叉树为:");
PostOder(T);
return 0;
}
c语言以函数二叉树的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用c语言设计一个二叉树类的结构、c语言以函数二叉树的信息别忘了在本站进行查找喔 。
推荐阅读
- 包含视频号直播卖童鞋的词条
- cpu用于什么,cpu是起什么作用
- 包含html5中怎么添加视频的词条
- 蝴蝶是什么电脑,蝴蝶电脑壁纸
- 关于c语言trim函数的实现的信息
- 直播电商集市是什么,直播电商市场怎么样
- 怎么查看手机里的照片像素,怎么查看手机里的照片像素大小
- ChatGPT概念板涨停,lpg涨停板
- vb.net怎么用api vb net