网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 模拟技术 >

二叉树的代码实现

时间:2023-01-18 10:41

人气:

作者:admin

标签:

导读:二叉树的主要操作有遍历,例如有先序遍历、中序遍历、后序遍历。在遍历之前,就是创建一棵二叉树,当然,还需要有删除二叉树的算法。...

二叉树是一种特殊的树型结构,一般都以二叉树作为树型结构学习的案例讲解。

2.jpg

二叉树的主要操作有遍历,例如有先序遍历、中序遍历、后序遍历。在遍历之前,就是创建一棵二叉树,当然,还需要有删除二叉树的算法。

以二叉树的创建、删除、先序遍历为例,实现代码如下

#include 
#include 


typedef char ElemType;
typedef struct node
{  ElemType data;
  struct node *lchild, *rchild;
} BTNode;      




BTNode * createTree(BTNode *tree){
  ElemType e; 
  fflush(stdin);
  scanf("%c", &e);
  if(e != '#'){
    tree = (BTNode *)malloc(sizeof(BTNode));
    tree->data = e; tree->lchild = NULL; tree->rchild = NULL;
    tree->lchild = createTree(tree->lchild);
    tree->rchild = createTree(tree->rchild);
  }
  return tree;
}


void DestroyBTree(BTNode *b)
{  if (b==NULL) return ;
  else
    {  DestroyBTree(b->lchild);
      DestroyBTree(b->rchild);
      free(b);           
  }
}


void PreOrder(BTNode *b)
{  if (b!=NULL)  
   {  printf("%c ",b->data); 
   PreOrder(b->lchild);
   PreOrder(b->rchild);
}
}


int main(){
  BTNode *tree = createTree(tree);


  PreOrder(tree);


  DestroyBTree(tree);
  return 0;
}

测试用例如下

A
B
D
#
G
#
#
#
C
E
#
#
F
#
#
A B D G C E F

以上测试用的测试案例,就是上述二叉树图形的结构,二叉树构成过程中,以先序的方式创建,子树为空的时候,输入为#

上述算法中,还可以做更多的优化,每一个优化都是一次进步。

审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信