使用链表存储二叉排序树并实现遍历算法(完全可用版)

  • L1_879297
    了解作者
  • 865B
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-17 12:21
    上传日期
使用链表存储二叉排序树并实现遍历算法 实现CreateTree函数函数原型:btnode *CreateTree (int n)形参说明:n: 节点个数返回值说明:返回树的根节点指针函数功能:构建有n个节点的二叉排序树,第一个节点为根节点,其它节点依次按照二叉排序树的构造过程加入
新建文件夹.rar
  • 新建文件夹
  • tree.cpp
    2.1KB
内容介绍
// tree.cpp : Defines the entry point for the application. // #include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> typedef struct btnode { int Data; struct btnode *Llink; struct btnode *Rlink; }btnode,*btreetype; btnode *CreatTree(int n) { btnode *p,*q,*root; int k; int i; root=NULL; for(i=0;i<n;i++) { p=(btnode*)malloc(sizeof(btnode)); p->Llink=NULL; p->Rlink=NULL; printf("input k:"); scanf("%d",&k); p->Data =k; if(root==NULL) root=p; else { q=root; while(q!=NULL) { if(q->Data>k) if(q->Llink!=NULL) q=q->Llink; else { q->Llink=p; q=NULL; } else if(q->Rlink!=NULL) q=q->Rlink; else { q->Rlink=p; q=NULL; } } } } return root; } void preorder(btnode *root) { if(root==NULL) return; else { printf("%d\n",root->Data); if(root->Llink!=NULL)preorder(root->Llink); if(root->Rlink!=NULL)preorder(root->Rlink); } } void inorder(btnode *root) { if(root==NULL) return; else { if(root->Llink!=NULL)preorder(root->Llink); printf("%d\n",root->Data); if(root->Rlink!=NULL)preorder(root->Rlink); } } void postorder(btnode *root) { if(root==NULL) return; else { if(root->Llink!=NULL)preorder(root->Llink); if(root->Rlink!=NULL)preorder(root->Rlink); printf("%d\n",root->Data); } } void OutputTree(btreetype &root,int count) { switch (count) { case 1: preorder(root); break; case 2: inorder(root); break; case 3: postorder(root); break; default: exit(1); } } void main() { btnode *root; int count,n; printf("\n"); printf("Please input n:"); scanf("%d",&n); root=CreatTree(n); do { printf("\t*******************************\n"); printf("\t1: 先序遍历\n"); printf("\t2: 中序遍历\n"); printf("\t3: 后序遍历\n"); printf("\t0: Exit\n"); printf("\t*******************************\n"); scanf("%d",&count); OutputTree(root,count); printf("\n"); }while(count!=0); }
评论
    相关推荐
    • 静态链表算法
      #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0
    • LinkedList:链表算法
      链表算法的实现,该算法从stdin读取用户命令并根据用户指令命令在链表上运行特定功能,例如:PUT n,GET n,LIST,FIRST,LAST,SORT,CLEAR,REMOVE n,EXIT,其中: PUT n-将一个整数n插入到链表中。 GET n-从...
    • 单双向链表算法
      package 单双向链表; /** * 单向链表增删改查操作 * */ public class LinkTest { public static void main(String[] args) { Link l=new Link(); l.addNode("A"); l.addNode("B"); l.addNode("C"); l....
    • 线性表和链表的基本算法
      线性表和链表的基本算法
    • 数据库实验 包含九个实验 有多种排序算法 链表的插入删除翻转等
      数据库实验 包含九个实验 有多种排序算法 链表的插入删除翻转等 树的三种遍历算法 字符串算法 移位密码 代换密码等
    • 链表算法详细代码
      链表算法详细代码,单链表,双链表,循环链表等等各种链表的代码详细代码
    • 链表相关算法.rar
      链表的相关算法题:很重要:7道 一般面试问的第一个问题,链表反转!
    • 链表倒置算法
      数据结构第二章 3题 给定一个不带头结点的单链表,写出将链表倒置的算法
    • harmonyos2-algorithm-linked-list:算法链表
      算法链表 这是一个代码战系列。 链表是一种练习递归的数据结构,本系列包含链表的许多基本操作。 检查lib/的解决方案和test/的单元测试。 注意:一些 kata 需要 TCO(尾调用优化)来测试大型链表。 TCO 仅在具有...