`

C语言实现后序遍历(递归)

阅读更多
#include<stdio.h>
#include<malloc.h>

typedef struct ThrNode
{
   int data;
   struct ThrNode *lchild;
   struct ThrNode *rchild;
   struct ThrNode *parent;
}thrnode;

bool CreateThrTree(thrnode* &T,thrnode* p)
{   
	
	char ch;
	scanf("%c",&ch);
	if(ch=='m') 
	{
		T=NULL;
		
	}
	else
	{
		T=(thrnode*)malloc(sizeof(thrnode));
		T->data=ch;
		T->parent=p;
		CreateThrTree(T->lchild,T);
		CreateThrTree(T->rchild,T);
	}

  return true;
}
void PrintTree(thrnode* T)
{
  printf("%c",T->data);

}

void PostOrderTraverse(thrnode* T)
{
  if(T)
  {
     PostOrderTraverse(T->lchild);
     PostOrderTraverse(T->rchild);
	 PrintTree(T);
  }
  
}
void main()
{
  thrnode *head=(thrnode*)malloc(sizeof(thrnode));
  head->data=0;
  head->parent=NULL;
  head->lchild=NULL;
  if(CreateThrTree(head->lchild,head)) PostOrderTraverse(head->lchild);
  

}

 

分享到:
评论

相关推荐

    C语言实现二叉树的后序遍历(递归)

    这充分展示了递归实现后序遍历的高效性和准确性。 总结来说,C语言实现的二叉树后序遍历(递归)不仅简洁明了,而且效率高。它通过对左子树、右子树的递归访问,最后访问根节点,完美地体现了后序遍历的特性。无论...

    二叉树的递归遍历,中序遍历,先序遍历,后序遍历

    在本文的示例代码中,我们使用了递归函数来实现先序遍历、中序遍历和后序遍历。 先序遍历是指先访问根结点,然后递归地访问左子树和右子树。在先序遍历中,我们首先访问根结点,然后递归地访问左子树和右子树。例如...

    自己编写的实验二叉树的后序遍历非递归算法c语言实现

    在递归方式下,后序遍历相对直观,但非递归实现则需要更巧妙的策略,如使用栈来模拟递归调用的过程。 这个实验中,我们主要关注的是如何用C语言实现非递归的二叉树后序遍历。首先,我们需要理解非递归实现的基本...

    数据结构试验报告用先序中序建立二叉树后序遍历非递归.pdf

    后序遍历非递归算法的实现相对复杂,需要利用栈的操作来实现。 4. 结构体的定义和使用:在C语言的实现中,结构体(struct)被用来定义树节点,其中包含了数据域(如字符型的data域)和指针域(lchild和rchild分别...

    C语言实现二叉树的前序、中序、后续遍历(递归法)

    以上代码展示了如何使用递归方法实现二叉树的前序、中序、后序遍历。这些实现都是基于递归的方式,对于大型二叉树来说,可能需要注意栈溢出的风险。在实际应用中,还可以考虑使用迭代的方式来实现这些遍历操作,以...

    二叉树的先序中序后序遍历

    递归实现后序遍历的伪代码如下: ```markdown 后序遍历(node): if node is not null: 后序遍历(node的左子树) 后序遍历(node的右子树) 访问当前节点 ``` 非递归实现较为复杂,一般采用两个栈,一个用于保存待...

    已知先序和中序遍历序列,求后序遍历序列.TXT

    根据给定文件的信息,本文将围绕“已知先序和中序遍历序列,求后序遍历序列”的核心主题进行展开,详细解析其中涉及的数据结构与算法,并深入理解其在C语言中的实现细节。 ### 数据结构:二叉树 在计算机科学中,*...

    C语言实现二叉树的前序遍历(非递归)

    在深入探讨C语言实现二叉树的前序遍历(非递归)之前,我们首先应当理解何为二叉树以及前序遍历的基本概念。 ### 二叉树简介 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子...

    c语言实现二叉树的前中后序遍历 递归和非递归 数据结构

    1.输入前序和中序遍历结果,建立二叉树 2.实现二叉树的三种递归遍历算方法 3.实现二叉树的三种非递归遍历算法 4.实现二叉树的旋转90°后的打印,直观树形结构

    二叉树的前中后序遍历(比较挫)

    在“二叉树的前中后序遍历(没有错误)”这个C语言实现的文件中,应该包含了三种遍历方式的代码实现,通过分析这些代码,我们可以理解每种遍历方法的逻辑和步骤。 **资源占用**: 虽然描述中提到“没有考虑系统的...

    二叉树的前序中序后序遍历代码

    具体实现上,首先递归地后序遍历左子树,然后递归地后序遍历右子树,最后访问根节点。 ```c void PostOrderTraverse(BiTree T){ if(T){ if(T-&gt;lchild) PostOrderTraverse(T-&gt;lchild); if(T-&gt;rchild) ...

    求二叉树的深度(后序遍历)

    在实际的压缩包文件中,可能包含了一个名为`TreeDepth`的源代码文件,里面应该实现了上述的二叉树节点定义、后序遍历以及计算深度的函数。通过阅读和理解这段代码,你可以深入学习二叉树的相关知识,包括数据结构、...

    数据结构实验报告8-树-求二叉树先序、中序、后序遍历次序的第k个访问结点-实验内容与要求.docx

    根据给定文件的信息,本次实验的主要目标是通过编程来实现对二叉树的先序、中序、后序遍历,并找到这些遍历次序下的第k个访问节点。接下来,我们将详细介绍实验的要求、设计思路、算法实现以及部分关键代码。 ### ...

    C语言实现二叉树的后续遍历(非递归)

    后序遍历是非递归实现的一种有效方法,它不仅能够提高程序的运行效率,还能帮助我们更好地理解二叉树的结构特性。对于初学者来说,理解并掌握这一知识点对于学习更复杂的树形结构有着重要的意义。

    C语言实现二叉树遍历

    递归实现时,首先对左子树进行后序遍历,然后对右子树进行后序遍历,最后访问根节点。非递归实现较复杂,一般需要用到两个栈,一个用于存储待访问的节点,另一个用于临时存储已访问的节点。 4. 按层遍历(Level ...

    二叉树 非递归前中后序遍历 C语言

    二叉树 非递归前中后序遍历汇总 C语言 希望大家给予建议

    二叉树的先序扩展创建,先序、中序、后序遍历的递归、非递归算法,求树的深度

    本文将深入探讨如何在C语言环境下,构建二叉树并实现其先序、中序、后序遍历的递归与非递归算法,同时讲解如何求解树的深度。 首先,我们来理解二叉树的先序遍历。先序遍历的顺序是:根节点 -&gt; 左子树 -&gt; 右子树。...

    二叉树求后序遍历(最终版)

    在C语言中实现二叉树的后序遍历,通常有三种方法:递归、栈辅助的非递归以及Morris遍历。这里我们主要关注前两种方法。 1. **递归实现**: 递归是最直观且易于理解的方法。在后序遍历的递归版本中,我们首先递归地...

    非递归先、中、后序遍历二叉树(C语言)

    本文将详细解释这三种遍历策略的非递归实现,并提供C语言的代码示例。 **先序遍历** 先序遍历的顺序是:根节点 -&gt; 左子树 -&gt; 右子树。在非递归实现中,我们可以使用栈来模拟递归调用。首先访问根节点,然后将右子...

Global site tag (gtag.js) - Google Analytics