关闭

二叉树的遍历(1)--先序遍历,中序遍历,后序遍历

标签: 二叉树遍历
108人阅读 评论(0) 收藏 举报
分类:

对于二叉树
这里写图片描述

代码结构:

    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int data) {
            this.value = data;
        }
    }

一个节点包含左子节点,右子节点
一般情况下我们使用递归算法对二叉树进行遍历:先序遍历,中序遍历,后序遍历

先序遍历

    public static void preOrderRecur(Node head) {
        if (head == null) {
            return;
        }
        System.out.print(head.value + " ");
        preOrderRecur(head.left);
        preOrderRecur(head.right);
    }

分析如下:
这里写图片描述

1.首先输出首节点12的值
2.一直递归对左右子节点进行相同操作,总是完成左子节点的遍历再进行右子节点的遍历
3.重复2直至节点为空,然后一步一步向上返回。

先序遍历:12 24 40 56 55 50 35 66 70

  • 中序遍历
    public static void inOrderRecur(Node head) {
        if (head == null) {
            return;
        }
        inOrderRecur(head.left);
        System.out.print(head.value + " ");
        inOrderRecur(head.right);
    }

中序遍历:56 40 55 24 50 12 66 35 70

  • 后续遍历
    public static void posOrderRecur(Node head) {
        if (head == null) {
            return;
        }
        posOrderRecur(head.left);
        posOrderRecur(head.right);
        System.out.print(head.value + " ");
    }

后序遍历:56 55 40 50 24 66 70 35 12

0
0
查看评论

C语言实现 前序、中序、后序遍历二叉树

1、代码实现#include <stdio.h> #include <stdlib.h>/* 定义数据类型 */ typedef char TypeData ;/* 定义二叉树 */ typedef struct stBiTreeNode { TypeData dat...
  • u010889616
  • u010889616
  • 2015-08-17 19:15
  • 7538

根据树的前序遍历、中序遍历、后序遍历中的两种遍历求第三种遍历结果

学过数据结构,都知道二叉树有四种遍历手段,前序遍历、中序遍历、后序遍历以及层序遍历,而前三种遍历存在较强的关联,即:知道中序遍历及另外两种遍历中的一种时,可以求第三种,简单的讲就是根据中序遍历和前序遍历、后序遍历中的一种,可以求第三种。 是不是有些绕了,自己慢慢理解吧!我们这里要讲一下实现代码。 遇...
  • f_zyj
  • f_zyj
  • 2016-04-15 00:08
  • 2191

算法学习 - 树的三种遍历(递归实现)先序遍历,中序遍历,后序遍历

树的遍历 这三种遍历方法其实都很简单的,举例来说: a / \ b c 这个是例子下面讲下这三个是如何遍历的。 struct TreeNode; typedef TreeNode* Node; typedef int EleType; struct TreeNode{ ...
  • chenfs1992
  • chenfs1992
  • 2014-11-23 01:32
  • 4521

算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现

首先来看一棵二叉树: 1、前序遍历: 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 若二叉树为空则结束返回,否则: (1)访问根结点; (2)前序遍历左子树; ...
  • jssongwei
  • jssongwei
  • 2016-03-03 17:33
  • 6934

二叉树的前序、中序、后序遍历—迭代方法

leetcode上的相关题目: 前序:https://leetcode.com/problems/binary-tree-preorder-traversal/?tab=Description 中序:https://leetcode.com/problems/binary-tree-inorde...
  • u011567017
  • u011567017
  • 2017-02-25 11:35
  • 1000

数据结构之前序遍历,中序遍历,后序遍历

  前序遍历-》首先访问根结点,                    然后遍历左子树,  &...
  • h516077808
  • h516077808
  • 2014-07-06 21:43
  • 2989

数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历

最近也是在准备笔试,由于没有系统的学过数据结构,所以每次在考到二叉树的遍历的时候都是直接跪,次数多了也就怒了,前些天也是准备论文没时间整这些,现在提交了,算是稍微轻松点了,所以花了半天的时间来学了下二叉树。现在记下来,以便后序查阅。 一、二叉树的遍历概念     1.  ...
  • android_cmos
  • android_cmos
  • 2016-10-21 21:49
  • 1489

根据中序遍历结果和前序(后序)遍历结果重构二叉树

问题描述:输入某二叉树的中序和前序(后序)遍历结果,请重构出该二叉树。 首先,我们需要回顾二叉树的三种遍历方式: 前序遍历:根+左子树+右子树 中序遍历:左子树+根+右子树 后序遍历:左子树+右子树+根 假设,当前二叉树的前序遍历结果为{1,2,4,5,3,6},中序遍历结果为{4,2,5,1,3...
  • yanan_seachange
  • yanan_seachange
  • 2016-06-21 13:30
  • 1288

根据前序遍历和中序遍历求后序遍历

一道HULU的笔试题(How I wish yesterday once more) 假设有棵树,长下面这个样子,它的前序遍历,中序遍历,后续遍历都很容易知道。 PreOrder:         GDAFEMH...
  • hou_blog
  • hou_blog
  • 2015-11-24 17:00
  • 1721

5-2 根据后序和中序遍历输出先序遍历 (25分)

树的练习题,路还长,这只是个开始
  • qq_37353105
  • qq_37353105
  • 2017-05-09 01:35
  • 722
    个人资料
    • 访问:8780次
    • 积分:686
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条