首页 > 编程语言 >二叉树的遍历(递归算法)

二叉树的遍历(递归算法)

时间:2023-04-24 09:22:30浏览次数:40  
标签:遍历 递归 BiTree void BiTNode 二叉树 rchild NULL

//二叉树的遍历(递归算法)

#include <stdio.h>
#include <malloc.h>

typedef struct BiTNode
{
    int data;
    struct BiTNode *lchild,*rchild;//存储二叉树的左孩子和右孩子
}BiTNode,*BiTree;

void InitTree(BiTree &root)
{
    root = (BiTNode *)malloc(sizeof(BiTNode));
    root->data = -1;
    root->lchild = NULL;
    root->rchild = NULL;
}

void visit(BiTNode *T)//访问函数
{
    printf("%d",T->data);
}

void PreOrder(BiTree T)//先序遍历(根左右)
{
    if(T!=NULL)
    {
        visit(T);//进行递归来访问节点
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

void InOrder(BiTree T)//中序遍历(左根右)
{
    if(T!=NULL)
    {
        InOrder(T->lchild);
        visit(T);
        InOrder(T->rchild);
    }
}

void PostOrder(BiTree T)//后序遍历(左右根)
{
    if(T!=NULL)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        visit(T);
    }
}

int main()
{
    BiTree Tree;
    InitTree(Tree);
    printf("%d",Tree->data);
    return 0;
}

 

标签:遍历,递归,BiTree,void,BiTNode,二叉树,rchild,NULL
From: https://www.cnblogs.com/ryuichi-ssk/p/17348416.html

相关文章

  • 如何遍历HashMap集合?
    在Java中,HashMap是一种常用的数据结构,它提供了快速的查找、插入和删除操作。当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现。方法一:使用键值对遍历HashMap中存储的是键值对的形式,因此最简单的方法就是直接遍历键值对。我们可以通过以下代码实现://创建一个Ha......
  • php递归遍历文件目录
    美日汇:www.hnzyxok.com手机端:www.hnzyxok.com/i递归遍历文件目录(大体的思路就是:传入一个文件名后输出遍历所有内容,等发现文件还是个文件夹的时候接着递归调用当前的遍历方法,如果不是文件夹就输出文件名)functiondakai($mulu){$mydir=dir($mulu);echo"<ul>\n";while($file......
  • 三大类算法:递归、排序、二分查找
    一、递归”递“+”归“。这两个意思,正是递归思想的精华所在,去的过程叫做递,回来的过程叫做归,在编程语言中对递归可以简单理解为:方法自己调用自己,只不过每次调用时参数不同而已。满足递归的条件:1、递归表达是(规律)如果一个问题的解能够拆分成多个子问题的解,拆分之后,子问题和该问题在求......
  • ArrayList的遍历方式与fail-fast
    遍历方式普通for循环遍历for(inti=0;i<arrayList.size();i++){System.out.println(arrayList.get(i));}推荐使用普通for循环,效率最高。Iterator迭代Iterator<Integer>iterator=arrayList.iterator();while(iterator.hasNext()){System.out.println(itera......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)
    (剑指Offer33.二叉搜索树的后序遍历序列(java解题))1.题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/\26/\13示......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)
    目录1.题目2.解题思路3.数据类型功能函数总结4.java代码5.踩坑小记递归调用,显示StackOverflowError1.题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉......
  • 从暴力递归到动态规划
    ///<summary>///机器人不停尝试///</summary>///<paramname="start">开始位置</param>///<paramname="aim">要到的位置</param>///<paramname="n">总的数</param>//......
  • Java中ArrayList的遍历与删除元素方式总结
    在Java编程中,我们经常需要对数据结构进行遍历操作,并根据业务需求删除部分元素。而数组列表(ArrayList)是集合类中的一种,它可以动态地添加和删除元素,非常适合在程序中使用。本篇博客将总结ArrayList中的两种遍历和删除元素的方式。在下面的示例代码中,我们先定义了一个ArrayList对象,......
  • 二叉树经典题解
    目录......
  • Java中递归的简单应用
    递归是一种非常常见的编程技巧,它可以将一个复杂的问题分解成更小的问题,然后递归地解决这些小问题,最终得到整个问题的解。递归的本质就是函数调用自身。我们来看一个简单的例子:计算阶乘。阶乘是指将一个数和它以及它之前的所有正整数相乘的结果,通常用符号"!"表示。例如,5的阶乘就是......