二叉树前中后递归遍历

1 public class Node {
2     public int value;
3     public Node left;
4     public Node right;
5
6     public Node (int data){
7         this.value = data;
8     }
9 }
 1 public class BinaryTreeMethod {
 2
 3     /**
 4      * 二叉树递归前序遍历
 5      * @param head
 6      */
 7     public void preOrderRecur(Node head){
 8         if(head == null){
 9             return;
10         }
11         System.out.print(head.value + " ");
12         preOrderRecur(head.left);
13         preOrderRecur(head.right);
14     }
15
16     /**
17      * 二叉树递归中序遍历
18      * @param head
19      */
20     public void inOrderRecur(Node head){
21         if(head == null){
22             return;
23         }
24         inOrderRecur(head.left);
25         System.out.print(head.value + " ");
26         inOrderRecur(head.right);
27     }
28
29     /**
30      * 二叉树递归后序遍历
31      * @param head
32      */
33     public void postOrderRecur(Node head){
34         if(head == null){
35             return;
36         }
37         postOrderRecur(head.left);
38         postOrderRecur(head.right);
39         System.out.print(head.value + " ");
40     }
41 }

测试代码:

 1 public class Test {
 2
 3     public  static void  main(String[] args){
 4         Node head = new Node(3);
 5         Node left = new Node(5);
 6         Node right = new Node(2);
 7         head.left = left;
 8         head.right = right;
 9
10         left.left = new Node(1);
11         right.left = new Node(7);
12
13         BinaryTreeMethod method = new BinaryTreeMethod();
14         method.preOrderRecur(head);
15         System.out.println();
16         method.inOrderRecur(head);
17         System.out.println();
18         method.postOrderRecur(head);
19     }
20 }
时间: 2024-10-05 23:25:28

二叉树前中后递归遍历的相关文章

二叉树前中后序遍历递归转循环

通过观察递归实现,用循环和栈模拟递归实现中结点入栈和出栈的过程. #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " << x << endl using namespace std; typedef long long LL; struct Node { int val; Node *left, *right; Node() : left(NULL), ri

二叉树前中后序遍历非递归实现

package MyExc; import java.util.Stack; class TreeNode{ int data; TreeNode left; TreeNode right; } public class BinaryTree { public void preOrder(TreeNode head){ Stack<TreeNode> stack = new Stack<>(); stack.add(head); while(!stack.isEmpty()){ h

二叉树的前中后序遍历简单的递归

二叉树的遍历 无外乎广度和深度 其中深度又分为前中后序遍历三种情况  这三种遍历若只是递归方法 自然很是简单 但递归代码简单 若嵌套层次太深 会栈溢出 二叉树节点数据结构: struct Binary_node{    int val;    Binary_node *left;    Binary_node *right;    Binary_node(int v = 0, Binary_node *le = nullptr, Binary_node *ri = nullptr) :val(v

二叉树的前序建立,前中后序遍历的非递归算法

二叉树的前序建立递归算法以及前中后序遍历的递归算法已经是人尽皆知了,递归算法也确实为代码的编写带来了很大的方便.然而,有时我们也确实需要它们的非递归算法.将递归算法转化为非递归算法可以帮助我们深入了解函数的调用与栈的原理.这里总结一下二叉树的这些重要的非递归算法. 一.前序建树 前序建树的基本思路是,接收用户输入的一组字符串,其中'#'代表空树,其他代表树结点的数据域值.例如,要建立如下一棵树 需要输入"AB#D##C##". 而非递归的思路是,1.设一个标志位来判断当前创建的结点是左

Qt实现 动态化遍历二叉树(前中后层次遍历)

binarytree.h 头文件 1 #ifndef LINKEDBINARYTREE_H 2 #define LINKEDBINARYTREE_H 3 #include<c++/algorithm> 4 #include<c++/cstdio> 5 #include<string> 6 #include<c++/string> 7 #include<c++/vector> 8 #include<vector> 9 #include&

数据结构二叉树——建立二叉树、中序递归遍历、非递归遍历、层次遍历

数据结构二叉树-- 编写函数实现:建立二叉树.中序递归遍历.借助栈实现中序非递归遍历.借助队列实现层次遍历.求高度.结点数.叶子数及交换左右子树. ("."表示空子树) #include<stdio.h> #include<stdlib.h> //***********二叉树链表节点结构 typedef char DataType; typedef struct Node {  DataType data;  struct Node*LChild;  struc

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 写在前面: 最近准备找工作,捡起原来学习过的各种知识,加上一些自己的理解,梳理一下流程,巩固自己的认识,一步两步,一步两步... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 二叉树的遍历是树操作的基础,一般的前中后序递归遍历比较简单,这里就不列出了,主要是非递归实

二叉树的建立及其前中后序遍历

1 //二叉树存储结构: 2 struct node 3 { 4 Int data; 5 node *lchild; 6 node *rchild; 7 }; 8 9 //二叉树在建树前根节点不存在: 10 Node *root = NULL; 11 12 //新建结点: 13 node *newNode(int v) 14 { 15 node *Node = new node; 16 Node->data = v; 17 Node->lchild = NULL; 18 Node->rc

【数据结构】 非递归前中后序遍历二叉树

数据结构学的递归了,深入了解后写一个三序非递归的版本. //测试数据:abd##eg##h##c#f## #include <cstdio> #include <iostream> typedef char ElemType; typedef struct Node { ElemType elem; struct Node *lchild,*rchild; }Node,*BiTree; typedef struct{ BiTree *base; BiTree *top; int s