博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础算法面试题---实现二叉树的先、中、后序遍历
阅读量:2493 次
发布时间:2019-05-11

本文共 1748 字,大约阅读时间需要 5 分钟。

前言

二叉树的先、中、后序遍历是非常经典的面试题,作为基础算法面试题必须要掌握。

定义

假设有这么一棵二叉树

在这里插入图片描述

  • 先序遍历:1、2、4、5、3、6、7(根-左-右)
  • 中序遍历:4、2、5、1、6、3、7(左-根-右)
  • 后序遍历:4、5、2、6、7、3、1(左-右-根)

代码实现

public class T_1 {
List
preList = new ArrayList<>(); List
inList = new ArrayList<>(); List
postList = new ArrayList<>(); public static void main(String[] args) {
TreeNode t1 = new TreeNode(1); TreeNode t2 = new TreeNode(2); TreeNode t3 = new TreeNode(3); TreeNode t4 = new TreeNode(4); TreeNode t5 = new TreeNode(5); TreeNode t6 = new TreeNode(6); TreeNode t7 = new TreeNode(7); t1.left = t2; t1.right = t3; t2.left = t4; t2.right = t5; t3.left = t6; t3.right = t7; T_1 t = new T_1(); t.preOrder(t1); t.inOrder(t1); t.postOrder(t1); System.out.println(t.preList); System.out.println(t.inList); System.out.println(t.postList); } /** * 先序遍历 * * @param root */ public void preOrder(TreeNode root) {
if (root == null) {
return; } preList.add(root.val); preOrder(root.left); preOrder(root.right); } /** * 中序遍历 * * @param root */ public void inOrder(TreeNode root) {
if (root == null) {
return; } inOrder(root.left); inList.add(root.val); inOrder(root.right); } /** * 后序遍历 * * @param root */ public void postOrder(TreeNode root) {
if (root == null) {
return; } postOrder(root.left); postOrder(root.right); postList.add(root.val); }}

递归是非常简单的实现方式,根据先、中、后序遍历的不同,决定什么时候记录当前节点的值

转载地址:http://jelrb.baihongyu.com/

你可能感兴趣的文章
Swift开发图解入门
查看>>
[Js-开发常识]为什么定义实体类属性建议用 Ineger 而不是 int
查看>>
P1137 旅行计划
查看>>
160523、Oracle建立表空间和用户
查看>>
处理机调度
查看>>
CQRS架构
查看>>
atmega8 例程:T1定时器 CTC模式 方波输出
查看>>
CAN控制器的选择
查看>>
sublime代码片段
查看>>
SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星 bitset
查看>>
外键约束的作用
查看>>
Spring AOP 面向切面编程
查看>>
Word Count作业
查看>>
安卓动画基础讲解
查看>>
Fragment管理工具类
查看>>
test
查看>>
12.2号
查看>>
等比数列前N项和的公式推导
查看>>
windows系统查找文件-通配符的使用
查看>>
python爬虫:其他操作
查看>>