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

原创 2016年05月30日 23:26:42

前序遍历

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> ans=new LinkedList<Integer>();
        Stack<TreeNode> stack= new Stack<TreeNode>();
        if(root!=null) stack.push(root);
        while(!stack.isEmpty())
        {
            TreeNode node=stack.pop();
            ans.add(node.val);
            if(node.right!=null) stack.push(node.right);
            if(node.left!=null) stack.push(node.left);
        }
        return ans;

    }
}

中序遍历

public class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> ans=new LinkedList<Integer>();
        Stack<TreeNode> stack=new Stack<TreeNode>();
        while(true){

            while(root!=null)
            {
                stack.push(root);
                root=root.left;
            }
            if(stack.isEmpty()) break;

            TreeNode node=stack.pop();
            ans.add(node.val);
            root=node.right;

        }
        return ans;
    }
}

后序遍历

public class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
    Stack<TreeNode> stack = new Stack<>();
    stack.push(root);
    List<Integer> ans = new ArrayList<>();
    while (!stack.isEmpty()) {
        TreeNode node = stack.pop();
        if (node != null) {
            ans.add(node.val);
            stack.push(node.left);
            stack.push(node.right);
        }
    }
    Collections.reverse(ans);
    return ans;
} 
}

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

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

java编写二叉树以及前序遍历、中序遍历和后序遍历

/** * 实现二叉树的创建、前序遍历、中序遍历和后序遍历 **/ package DataStructure; /** * Copyright 2014 by Ruiqin Sun * A...
  • piaoxue820
  • piaoxue820
  • 2014年09月09日 15:27
  • 6326

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

首先来看一棵二叉树: 1、前序遍历: 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树...
  • jssongwei
  • jssongwei
  • 2016年03月03日 17:33
  • 6941

根据二叉树前序遍历和中序遍历序列求解后序遍历的算法

问题模型:已知某二叉搜索树前序遍历序列为1,2,3,4,5,6,中序遍历为3,2,4,1,6,5,设计程序计算后序序列。 关于这个问题你可以通过前序遍历和中序遍历创建一颗树,然后通过后序遍历进行求解,...
  • Alex123980
  • Alex123980
  • 2016年06月06日 20:27
  • 817

分别根据前中序遍历和后中序遍历来推二叉树的结构

1、理论分析: 数据结构的基础知识中重要的一点就是能否根据两种不同遍历序列的组合(有三种:先序+中序,先序+后序,中序+后序),唯一的确定一棵二叉树。然后就是根据二叉树的不同遍历序列(先序、中序、后...
  • weixin_35909255
  • weixin_35909255
  • 2017年02月14日 01:21
  • 791

数据结构与算法——二叉树的前序遍历,中序遍历,后序遍历

数据结构与算法——二叉树的前序遍历,中序遍历,后序遍历
  • Linux_ever
  • Linux_ever
  • 2016年01月22日 11:42
  • 2057

已知前序遍历和中序遍历,求后序遍历的程序实现

已知两种遍历,求第三种遍历是数据结构的常考题, 现在用编程的方式来实现:    已知前序遍历和中序遍历, 求后序遍历.    虽然这个问题我们用手画画就得出答案了,而编程的话反而不知道如何...
  • LTianchao
  • LTianchao
  • 2014年04月01日 13:17
  • 1241

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

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

二叉树遍历(前序、中序、后序、层次遍历、深度优先、广度优先)

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定...
  • My_Jobs
  • My_Jobs
  • 2015年02月03日 16:10
  • 15884

二叉树前序、中序、后序遍历相互求法(实例)

 1.已知先序和中序求后序      先序遍历的节点顺序是:ADCEFGHB,中序遍历是CDFEGHAB,则后序遍历的结果是  CFHGEDBA 解:1)根据先序遍历结果可知A是根节点,根据...
  • snowsnowsnow1991
  • snowsnowsnow1991
  • 2016年09月14日 22:10
  • 1071
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树的前序遍历,中序遍历,后序遍历代码
举报原因:
原因补充:

(最多只允许输入30个字)