博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
94. Binary Tree Inorder Traversal(非递归实现二叉树的中序遍历)
阅读量:6831 次
发布时间:2019-06-26

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

Given a binary tree, return the inorder traversal of its nodes' values.

Example:

Input: [1,null,2,3]   1    \     2    /   3Output: [1,3,2]

Follow up: Recursive solution is trivial, could you do it iteratively?

 

方法一:递归

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public void preorderTraversal(TreeNode root) {        if(root==null) return ;        preorderTraversal(root.left);        System.out.print(root.val+' ');        preorderTraversal(root.right);    }}

 

方法二:迭代

中序遍历第左右根,所以设计程序时首先要考虑的是找到最左边的叶子结点。找到之后弹出还要考虑这个结点有没有右孩子。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public List
inorderTraversal(TreeNode root) { Stack
stack=new Stack
(); List
list=new ArrayList
(); while (root!=null||!stack.isEmpty()){ while (root!=null){ stack.add(root); root=root.left; } TreeNode treeNode=stack.pop(); list.add(treeNode.val); root=treeNode.right; //root是判断条件。每次弹出的结点都要检查是否还有右孩子。有就加入,没有就弹出。 } return list; }}

 

转载于:https://www.cnblogs.com/shaer/p/10670452.html

你可能感兴趣的文章
2013互联网公司,年终奖有几何?
查看>>
互联网
查看>>
MySQL load data 权限相关
查看>>
ribbon重试机制
查看>>
修改sql数据库文件 物理文件名称
查看>>
关于PHP 时区错误的问题
查看>>
ScriptManager.RegisterStartupScript失效的解决方案
查看>>
vsftpd 添加用户
查看>>
运行 python 脚本错误:urllib2.URLErroe:<urlopen error unknown url type : https>
查看>>
递归方法
查看>>
Sonar+maven+jenkins集成,Java代码走查
查看>>
浏览器渲染页过程描述
查看>>
js中点击返回顶部
查看>>
Gtest源码剖析:1.实现一个超级简单的测试框架xtest
查看>>
UEditor 是一套开源的在线HTML编辑器
查看>>
Linux 命令简介
查看>>
第三方模块的安装
查看>>
Terracotta中锁与性能的问题
查看>>
遇到Linux系统安装时窗口过大,按钮点不到,该怎么解决
查看>>
Xamarin开发Android笔记:TextView行间距设定
查看>>