LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)
2015-07-08 09:57
417 查看
题目:
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
return
解题:
中序遍历一颗二叉树,如果是递归就很简单了,中序遍历左+访问根节点+中序遍历右 就可以了。迭代的话,我是通过一个栈,从根节点开始入栈,只要一直存在左节点就一直入栈,不存在左节点就出栈访问节点值,然后继续遍历出栈那个节点的右节点。
代码:
1,递归
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3
return
[1,3,2].
解题:
中序遍历一颗二叉树,如果是递归就很简单了,中序遍历左+访问根节点+中序遍历右 就可以了。迭代的话,我是通过一个栈,从根节点开始入栈,只要一直存在左节点就一直入栈,不存在左节点就出栈访问节点值,然后继续遍历出栈那个节点的右节点。
代码:
1,递归
public static List<Integer> result=new ArrayList<>(); public static List<Integer> inorderTraversal(TreeNode root,List<Integer> result) { if(root!=null) { inorderTraversal(root.left,result); result.add(root.val); inorderTraversal(root.right,result); } return result; }2,迭代(下面两个函数都是 只是不同的写法而已)
public static List<Integer> inorderTraversal2(TreeNode root,List<Integer> result) { List<Integer> res=new ArrayList<>(); Stack<TreeNode> nodeStack=new Stack<>(); while(root!=null||!nodeStack.isEmpty()) { while(root!=null) { nodeStack.push(root); root=root.left; } TreeNode tempNode=nodeStack.pop(); res.add(tempNode.val); root=tempNode.right; } return res; } public static List<Integer> inorderTraversal3(TreeNode root,List<Integer> result) { List<Integer> res=new ArrayList<>(); Stack<TreeNode> nodeStack=new Stack<>(); while(true) { while(root!=null) { nodeStack.add(root); root=root.left; } if(nodeStack.isEmpty()) break; TreeNode tempNode=nodeStack.pop(); res.add(tempNode.val); root=tempNode.right; } return res; }
相关文章推荐
- java中List集合及其遍历详解
- 安装Android SDK时,点击SDK Manager.exe闪退,并且jdk的环境变量是对的。(转载)
- [Java]编译学习之一
- 转 mybatis javaType与jdbcType对应
- Java正则表达式语法
- Java-抽象类和接口概述
- java class文件生成jar包
- Spring3+ibatis (SQL Server)+pager-taglib.tld查询分页的实现
- Java-final
- Java-子类和父类的几种关系
- Java-继承概述
- 关于Java集合的小抄
- Struts2中namespace的用法
- Windows 2003 不能安装JDK 8
- ubuntu环境下配置sudo下的Java
- eclipse maven jetty启动修改默认端口
- Eclipse 导入项目出现乱码
- JAVA基础----java中E,T,?的区别?
- Java代码规范
- Java 访问控制