返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言线索二叉树的前中后如何创建和遍历
  • 242
分享到

C语言线索二叉树的前中后如何创建和遍历

2023-06-29 06:06:34 242人浏览 泡泡鱼
摘要

这篇“C语言线索二叉树的前中后如何创建和遍历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言线索二叉树的前中后如何创建和

这篇“C语言线索二叉树的前中后如何创建和遍历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言线索二叉树的前中后如何创建和遍历”文章吧。

    1.结构

    #include<stdio.h>#include<stdlib.h>#define false 0#define true 1using namespace std;typedef struct BTnode{ int data; struct BTnode *lchild,*rchild; int ltag,rtag; }*BTree,BTnode;

    1.1初始化tag

    #include<stdio.h>#include<stdlib.h>#define false 0#define true 1using namespace std;typedef struct BTnode{ int data; struct BTnode *lchild,*rchild; int ltag,rtag; }*BTree,BTnode;

    2.基本操作

    2.1 先序创建二叉树

    int j=0;  //创建二叉树的全局变量  //先序创建二叉树 int CreateBTree(BTree &T){ int str[]={1,2,3,NULL,4,NULL,NULL,NULL,5,6,NULL,7,NULL,NULL,8,NULL,NULL}; if(str[j]=='#') return false; if(str[j]==NULL){ T=NULL; j++; }else{ T=(BTnode *)malloc(sizeof(BTnode)); T->data=str[j]; j++; CreateBTree(T->lchild); CreateBTree(T->rchild); } }

    输出函数:

    inline bool visit(int e){   //此处使用内敛函数,提高运行效率  printf("%d",e); return true; }

    2.2.先序线索化

    //先序线索化. void prehread(BTree &root){if(root!=NULL){if(root->lchild==NULL){root->ltag=1;root->lchild=pre;}else{root->ltag=0;}if(pre){if(pre->rchild==NULL){pre->rtag=1;pre->rchild=root;}else{pre->rtag=0;}}pre=root;if(root->ltag==0){prehread(root->lchild);}if(root->rtag==0){prehread(root->rchild);}}}
    2.2.1.先序遍历
    //寻找先序后继 BTree preNext(BTree T){ if(T->rtag==1){return T->rchild; }else{ if(T->ltag==0){ return T->lchild; }else{ return T->rchild; } } }//先序线索二叉树的遍历void prebianli(BTree T){BTree p;p=T;while(p){visit(p->data);p=preNext(p);}}

    C语言线索二叉树的前中后如何创建和遍历

    2.3.中序线索化

    //中序线索化BTree pre=NULL ;  //中序线索化的全局变量 void Inthread(BTree &root){if(root!=NULL){Inthread(root->lchild);if(root->lchild==NULL){root->ltag=1;root->lchild=pre;}else{root->ltag=0;}if(pre){if(pre->rchild==NULL){pre->rtag=1;pre->rchild=root;}else{pre->rtag=0;}}pre=root;Inthread(root->rchild);}}
    2.3.1 中序遍历
    //求中序首结点 BTree InFirst(BTree T){BTree p=T;if(p==NULL) return NULL;while(p->ltag==0){p=p->lchild; }return p;} //求中序后继 BTree InNext(BTree T) { BTree next=NULL; if(T->rtag==1){ next=T->rchild; }else {T = T->rchild;while (T->ltag==0 ) {T = T->lchild;}next=T; } return next; } //中序线索二叉树的遍历void Inbianli(BTree T){BTree p;p=InFirst(T);while(p){visit(p->data);p=InNext(p);}}

    C语言线索二叉树的前中后如何创建和遍历

    2.4.后序线索化

    //后续线索化  void Postthread(BTree &root){BTree pre=NULL;if(root){Postthread(root->lchild);Postthread(root->rchild);if(root->lchild==NULL){root->ltag=1;root->lchild=pre;}if(pre&&pre->rchild==NULL){pre->rtag=1;pre->rchild=root;}pre=root;}}
    2.4.1 后序遍历
    //求后序前驱 BTree postnext(BTree T){if(T->ltag==0){if(T->rtag==0){return T->rchild;}else{return T->lchild;}}else {return T->lchild;}}//后序遍历void postbianli(BTree T){BTree p;p=T;while(p){p=postnext(p);visit(p->data);}}

    C语言线索二叉树的前中后如何创建和遍历

    以上就是关于“C语言线索二叉树的前中后如何创建和遍历”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

    --结束END--

    本文标题: C语言线索二叉树的前中后如何创建和遍历

    本文链接: https://lsjlt.com/news/323039.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • C语言线索二叉树的前中后如何创建和遍历
      这篇“C语言线索二叉树的前中后如何创建和遍历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言线索二叉树的前中后如何创建和...
      99+
      2023-06-29
    • C语言实现线索二叉树的前中后创建和遍历详解
      目录1.结构1.1初始化tag2.基本操作2.1 先序创建二叉树2.2.先序线索化2.2.1.先序遍历2.3.中序线索化2.3.1 中序遍历2.4.后序线索化2.4.1 后序遍历总结...
      99+
      2024-04-02
    • c语言二叉树怎么创建与遍历
      在C语言中,可以使用结构体来表示二叉树节点,然后通过递归的方式来创建和遍历二叉树。 首先定义一个结构体表示二叉树节点: struct...
      99+
      2024-04-02
    • C语言中如何实现二叉树的后序遍历
      小编给大家分享一下C语言中如何实现二叉树的后序遍历,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!首先我们从两个方面讲解二叉树的后序遍历(递归+迭代)一.二叉树的后序遍历.(递归)思想:首先我们从二叉树的根节点开始先遍历其左...
      99+
      2023-06-29
    • python中创建和遍历二叉树
      python创建和遍历二叉树,可以使用递归的方式,源代码如下: #!/usr/bin/python class node(): def __init__(self,k=None,l=None,r=None): self.key=...
      99+
      2023-01-31
      建和 遍历 中创
    • c语言二叉树的前序遍历方法
      这篇文章主要讲解了“c语言二叉树的前序遍历方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言二叉树的前序遍历方法”吧!题目给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,nu...
      99+
      2023-06-19
    • C语言中二叉树的后序遍历详解
      目录一.二叉树的后序遍历.(递归)二.二叉树的后序遍历(迭代)总结首先我们从两个方面讲解二叉树的后序遍历(递归+迭代) 一.二叉树的后序遍历.(递归) 思想: 首先我们从二叉树的根节...
      99+
      2024-04-02
    • C语言之二叉树的遍历
      目录0.写在前面1.前序遍历步骤详解代码实现2.中序遍历步骤详解代码实现3.后序遍历步骤详解代码实现0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种...
      99+
      2023-05-14
      C语言实现二叉树遍历 二叉树遍历
    • web开发中如何创建和遍历二叉树
      这篇文章给大家分享的是有关web开发中如何创建和遍历二叉树的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。0. 前言二叉树的创建及遍历的代码实现,其中包括递归遍历和栈遍历。1. 二...
      99+
      2024-04-02
    • C++二叉树的创建及遍历详情
      目录树的定义什么是树?非递归的中序遍历的实现二叉树的非递归的前序遍历的实现二叉树的创建以及前中后序遍历的代码总结树的定义 什么是树? 假如给我们一棵二叉树的前序遍历和中序遍历结果,我...
      99+
      2024-04-02
    • C语言二叉树的建立与遍历方法
      本篇内容介绍了“C语言二叉树的建立与遍历方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录这里给一个样例树:总结这里给一个样例树:代码:...
      99+
      2023-06-20
    • C++非递归如何实现二叉树的前中后序遍历
      小编给大家分享一下C++非递归如何实现二叉树的前中后序遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二叉树的前序遍历在不使用递归的方式遍历二叉树时,我们可以使...
      99+
      2023-06-21
    • C++非递归实现二叉树的前中后序遍历
      目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的前序遍历 在不使用递归的方式遍历二叉树时,我们可以使用一个栈模拟递归的机制。二叉树的前序遍历顺序是:根 → 左子树 → ...
      99+
      2024-04-02
    • C语言二叉树的遍历示例介绍
           在本算法中先利用先序遍历创建了树,利用了递归的算法使得算法简单,操作容易,本来无printf("%c的左/右子树:", c...
      99+
      2024-04-02
    • 详细了解C语言二叉树的建立与遍历
      目录这里给一个样例树:总结这里给一个样例树: 代码: #include <stdio.h> #include <string.h> #include ...
      99+
      2024-04-02
    • C++如何实现二叉树的遍历
      本篇内容介绍了“C++如何实现二叉树的遍历”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!二叉树的遍历Q:什么是二叉树的遍历?A:二叉树的遍历...
      99+
      2023-06-30
    • C++实现LeetCode(106.由中序和后序遍历建立二叉树)
      [LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树 Gi...
      99+
      2024-04-02
    • 详解Go语言如何实现二叉树遍历
      目录1. 二叉树的定义2. 前序遍历3. 中序遍历4. 后序遍历1. 二叉树的定义 二叉树需满足的条件 ① 本身是有序树 ② 树中包含的各个节点的长度不能超过2,即只能是0、1或者2...
      99+
      2024-04-02
    • C语言进阶练习二叉树的递归遍历
      目录二叉树的前中后序遍历遍历二叉树求二叉树的结点个数遍历二叉树求二叉树的叶子结点个数求二叉树中data为x的结点求二叉树的深度二叉树的前中后序遍历 所谓二叉树遍历(Traversal...
      99+
      2024-04-02
    • C语言二叉树的遍历方法怎么实现
      这篇文章主要介绍“C语言二叉树的遍历方法怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言二叉树的遍历方法怎么实现”文章能帮助大家解决问题。     在本算法...
      99+
      2023-06-26
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作