首页 > 其他分享 >数据结构-二叉树遍历非递归

数据结构-二叉树遍历非递归

时间:2022-12-20 17:57:14浏览次数:38  
标签:BT 遍历 ++ top null BTNODE 二叉树 数据结构 STACK

前序遍历

void preorder(BTNODE BT)
{
    BTNODE STACK[100];
    int top = -1;
    STACK[++top] = BT;
    BTNODE p = null;

    while(top!=-1)
    {
        BTNODE p=STACK[top--];
        visit(p);
        if(p->right!=null)
        {
            STACK[++top] = p->right;
        }
        if(p->left!=null)
        {
            STACK[++top] = p->left;
        }
    }
}

中序遍历

void inorder(BTNODE BT)
{
    BTNODE STACK[100];
    BTNODE p = BT;
    int top=-1;

    while(top!=-1 || p!=null)
    {
        while(p!=null)
        {
            STACK[++top] = p;
            p=p->left;
        }
        if(top!=-1)
        {
            p = STACK[top--];
            visit(p);
            p=p->right;
        }
    }
}

后续遍历

void postorder(BTNODE BT)
{
    BTNODE STACK1[100];    // 遍历
    BTNODE STACK2[100];    // 逆后续
    int top1 = -1;
    int top2 = -1;
    STACK1[++top] = BT;
    BTNODE p = null;

    while(top1!=-1)
    {
        p=STACK1[top1--];
        STACK2[++top2]=p;
        if(p->left!=null)
        {
            STACK1[++top]=p->left;
        }
        if(p->right!=null)
        {
            STACK1[++top]=p->right;
        }
    }
    while(top2!=-1)
    {
        p=STACK1[top2--];
        visit(p);
    }
}

标签:BT,遍历,++,top,null,BTNODE,二叉树,数据结构,STACK
From: https://www.cnblogs.com/sugare/p/16994780.html

相关文章

  • 数据结构(起泡排序)
    #include<stdio.h>#defineKEYTYPEint#defineMAXSIZE100typedefstruct{KEYTYPEkey;}SSELEMENT;intCOMPARE(SSELEMENTa[],intn){inti,j,p,flag;i=n......
  • 数据结构堆(Heap)&排序
    在我们描述堆之前,我们首先要明白一个概念,什么是树?树的概念及结构1.树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是......
  • 数据结构 玩转数据结构 7-4 Leetcode中的集合问题和更多集合相关问题
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13706 1重点关注1.1见代码演练3.1 1.2有序集合和无序集合7-1二叉树实......
  • 数据结构
    dataframe:二维数据,整个表格,多行多列 series:一维数据,一行或一列s.loc[:,"列名"]=s["列名"].str.replace("'°C","").astype('int32')#去掉°c以excel成绩为例:i......
  • MySQL索引背后的数据结构及算法原理
    摘要:看到的一篇关于MySql索引的介绍,感觉比较经典,直接转了。 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸......
  • 【数据结构-栈】卡特兰数
    目录卡特兰数公式出栈序列数二叉树形态数卡特兰数公式f(n)=C(2n,n)/(n+1)计算用途:二叉树形态数,出栈序列数出栈序列数【例1】3个不同元素依次进栈,能得到多少种......
  • 二叉树的最大/最小深度
    1.深度与高度二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径......
  • LeetCode 102_二叉树的层序遍历
    LeetCode102:二叉树的层序遍历题目给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]......
  • 常用数据结构:单向链表和双向链表的实现
    1、链表是什么?链表是编程语言中常见的一种数据结构,它可以实现动态的创建和删除,只要内存足够,链表的数量和长度是可以无限多和无限长的。链表顾名思义是一种链式的数据结构,它......
  • 数据结构与算法概念
    目录引入概念第一次尝试算法的提出算法的概念算法的五大特性第二次尝试算法效率衡量执行时间反应算法效率单靠时间值绝对可信吗?时间复杂度与“大O记法”如何理解“大O记法......