三种递归遍历二叉树

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 typedef int ElementType;
 5
 6 struct BinarySearchTreeNode
 7 {
 8     ElementType Element;
 9     struct BinarySearchTreeNode *Left;
10     struct BinarySearchTreeNode *Right;
11 };
12
13 int BinarySearchTreePreOrder(struct BinarySearchTreeNode *TreeRoot)
14 {
15     if(TreeRoot!=NULL)
16     {
17         printf("%d\n",TreeRoot -> Element);
18         BinarySearchTreePreOrder(TreeRoot->Left);
19         BinarySearchTreePreOrder(TreeRoot->Right);
20     }
21     return 0;
22 }
23
24 int BinarySearchTreeInOrder(struct BinarySearchTreeNode *TreeRoot)
25 {
26     if(TreeRoot!=NULL)
27     {
28         BinarySearchTreeInOrder(TreeRoot->Left);
29         printf("%d\n",TreeRoot -> Element);
30         BinarySearchTreeInOrder(TreeRoot->Right);
31     }
32     return 0;
33 }
34
35 int BinarySearchTreePostOrder(struct BinarySearchTreeNode *TreeRoot)
36 {
37     if(TreeRoot!=NULL)
38     {
39         BinarySearchTreePostOrder(TreeRoot->Left);
40         BinarySearchTreePostOrder(TreeRoot->Right);
41         printf("%d\n",TreeRoot -> Element);
42     }
43     return 0;
44 }
45
46 int main()
47 {
48 //    BinarySearchTreePreOrder(TreeRoot);
49 //    BinarySearchTreeInOrder(TreeRoot);
50     BinarySearchTreePostOrder(TreeRoot);
51     return 0;
52 }

原文地址:https://www.cnblogs.com/Asurudo/p/9427455.html

时间: 2024-10-03 00:05:58

三种递归遍历二叉树的相关文章

Java学习(十八):二叉树的三种递归遍历

二叉树的三种递归遍历: 1 public class StudentNode 2 { 3 private String name; 4 5 private StudentNode leftNode; 6 7 private StudentNode rightNode; 8 9 public String getName() 10 { 11 return name; 12 } 13 14 public void setName(String name) 15 { 16 this.name = na

C++实现二叉树的建立和三种递归遍历

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 二叉树是一种常见的数据结构,二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的可以运行的C++代码来随便建立一个如下图所示的二叉树,建一棵二叉树是实现二叉树各种操作的基础,下面的程序也很简单,这只是二叉树练习的开始,以后的博文中,将会紧紧围绕这棵二叉树练习更多的操作:如求二叉树的大小,二叉树的深度,翻转二叉树...,这里只是基础中的基础,只是为以后的学习做铺垫. 下面给出C++代码,代码的功能包括: 1.建立如上图所示的简单的二叉树. 2.

二叉树的三种递归遍历实现

声明:学过二叉树的童鞋可以跳过前面的故事,直接看最后的代码实现.  你见过二叉树吗?一种很神奇的树,传说见到他的人都是幸运的.如果你没见过,好运立马降临: 怎么样?有被惊艳到吗?好运已经送到,祝你今晚睡得香甜. 好了,送完祝福,下面讲一个神奇的故事: 讲故事前,简单说说二叉树. 那么我要说的二叉树是什么呢?它是一种数据结构,数据结构是什么可以自行百度一下,这里不讨论他.举一个现实中的例子:把某个家庭看作一棵树,这家的爸爸(妈妈)有两个孩子,那么爸爸(妈妈)就是树的根,俩孩子就是这棵树的叶子,而此

二叉树的创建与三种递归遍历

#include<iostream>struct tree{ struct tree *left; struct tree *right; int data;};tree *T;typedef struct tree *Tree,*TNode,TREE;using namespace std;void PreCreateTree(Tree& T);void PreOrder(Tree& T);void InOrder(Tree& T);void PostOrder(Tr

二叉树的创建,和三种递归遍历方式

在运行窗口输入: A B D # # F E # # # C G # H # # I # # 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef char ElementType; 5 typedef struct TNode *Position; 6 typedef Position BinTree; //二叉树类型 7 struct TNode { 8 ElementType Data; //结点数据 9 BinTree

【转】更简单的非递归遍历二叉树的方法

解决二叉树的很多问题的方案都是基于对二叉树的遍历.遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了.其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事.正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章.可是大家需要的真是那些非递归遍历代码和讲述吗?代码早在学数据结构时就看懂了,理解了,可为什么我们一而再再而三地忘记非递归遍历方法,却始终记住了递归遍历方法? 三种递归遍历对遍历的描述,思路非常简洁,最重要的是三种方法完全统一,大大减轻了我们理解的负担.

递归遍历二叉树

递归遍历分三种: 1.前序遍历二叉树(二叉树非空) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 2.中序遍历二叉树(二叉树非空) 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 3.后序遍历二叉树(二叉树非空) 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 三种递归的算法遍历,终止条件是二叉树为空的时候. 记忆的方法呢,前中后,都是以根节点命名的,前序,先访问根节点,中序,根节点在第二,后序,根节点最后进行访问.

史上最简明易懂非递归遍历二叉树算法

巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 遍历二叉树的递归函数是体现了算法之美的高妙算法,思路清晰,代码简洁,读之赏心悦目.代码例如以下: 程序代码: void PreOrderTraverse_R(BiTree BT)//採用递归方式先序遍历二叉树BT { if(BT != NULL) { printf("%c", BT->data);//输出该结点(根结点) PreOrderTraverse_R(BT->lchi

重拾算法(1)——优雅地非递归遍历二叉树及其它

重拾算法(1)——优雅地非递归遍历二叉树及其它 本文中非递归遍历二叉树的思想和代码都来自这里(http://jianshu.io/p/49c8cfd07410#).我认为其思想和代码都足够优雅动人了,于是稍作整理,得到如下的程序. 前中后序遍历二叉树 1 public class BinaryTreeNode<T> 2 { 3 public T Value { get;set; } 4 public BinaryTreeNode<T> Parent { get;set; } 5 p