LeetCode之二叉树中序迭代遍历
来源:互联网 发布:如何安装ubuntu虚拟机 编辑:程序博客网 时间:2024/05/17 02:39
问题描述:
/** * For example: Given binary tree {1,#,2,3}, * 1 * \ * 2 * / * 3 * return [1,3,2]. * * Note: Recursive solution is trivial, could you do it iteratively? */
题目说,递归解法很easy。要让用迭代的方法进行遍历。
对于二叉树的操作,不用递归的话,要想遍历肯定要用到栈来操作。
具体代码如下:
public static ArrayList<Integer> inorderTraversal(TreeNode root){ ArrayList<Integer> inOrder = new ArrayList<Integer>(); if(root==null) return inOrder; Stack<TreeNode>s=new Stack<TreeNode>(); s.add(root); TreeNode p=root.left; while(!s.empty()){ while(p!=null) { s.add(p); p=p.left; } TreeNode n = s.pop(); inOrder.add(n.val); p=n.right; if(p!=null) { s.add(p); p=p.left; } } return inOrder; } //测试代码: public static void main(String arg[]) { TreeNode r1 = new TreeNode(1); TreeNode r2 = new TreeNode(2); TreeNode r3 = new TreeNode(3); r1.right = r2; r2.left = r3; ArrayList<Integer> array=inorderTraversal(r1); for(int i=0;i<array.size();i++) { System.out.print(array.get(i)+","); } }
0 0
- LeetCode之二叉树中序迭代遍历
- leetcode之二叉树层序遍历按行存值
- [leetcode]二叉树先序遍历
- [leetcode]二叉树中序遍历
- leetcode二叉树遍历
- [leetcode]二叉树遍历
- LeetCode之通过二叉树的中序遍历和后序遍历还原二叉树
- LeetCode之二叉树的前序遍历
- LeetCode之二叉树的遍历(二)
- LeetCode之二叉树按层从下往上遍历
- 【Leetcode】之二叉树的非递归遍历
- leetcode之二叉树遍历求和巧妙递归
- leetcode之二叉树类之二叉树遍历系列-----94/144/145/102/107/103
- [LeetCode]144 二叉树先序遍历
- [LeetCode]94 二叉树中序遍历
- [LeetCode]145 二叉树后序遍历
- leetCode之非递归中序遍历、后序遍历二叉树
- LeetCode之通过二叉树的中序遍历和前序遍历来还原二叉树
- 可修改区间k-th number
- CSS后代选择器
- 这段时间使用MKMapView的一点总结(待编辑)
- android 真机 访问本地web服务器 localhost
- SpringMVC Controller介绍及常用注解
- LeetCode之二叉树中序迭代遍历
- 简谈Masnory的功能和使用
- AVAssetExportSession progress KVO
- 帧率、码流与分辨率相关知识
- STOP状态下通过串口唤醒MCU
- Unity链接ADB测试流程
- linux的jdk的安装
- Android中的网络管理源码分析--netd
- AndroidStudio 一个编译技巧