【LeetCode】Binary Tree Inorder Traversal 二叉树中序遍历递归以及非递归算法
来源:互联网 发布:数学思维训练 知乎 编辑:程序博客网 时间:2024/04/29 01:49
Binary Tree Inorder Traversal
Total Accepted: 16494 Total Submissions: 47494
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
Note: Recursive solution is trivial, could you do it iteratively?
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
【解题思路】
1、递归
Total Accepted: 16494 Total Submissions: 47494
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
{1,#,2,3}
,1 \ 2 / 3return
[1,3,2]
.Note: Recursive solution is trivial, could you do it iteratively?
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
【解题思路】
1、递归
Java AC
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private ArrayList<Integer> list; public ArrayList<Integer> inorderTraversal(TreeNode root) { list = new ArrayList<Integer>(); inOrder(root); return list; } private void inOrder(TreeNode root){ if(root == null){ return; } inOrder(root.left); list.add(root.val); inOrder(root.right); }}2、非递归栈存储节点,当左孩子不为空,一直入栈。否则出栈,同时将栈顶元素存入list中,针对当前节点右孩子做同样操作。
Java AC
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private ArrayList<Integer> list; public ArrayList<Integer> inorderTraversal(TreeNode root) { list = new ArrayList<Integer>(); inOrder(root); return list; } private void inOrder(TreeNode root){ Stack<TreeNode> stack = new Stack<TreeNode>(); while(root != null || !stack.isEmpty()){ while(root != null){ stack.push(root); root = root.left; } if(!stack.isEmpty()){ root = stack.pop(); list.add(root.val); root = root.right; } } }}
0 0
- 【LeetCode】Binary Tree Inorder Traversal 二叉树中序遍历递归以及非递归算法
- leetcode 94. Binary Tree Inorder Traversal 二叉树中序递归遍历
- 【LeetCode】Binary Tree Preorder Traversal 二叉树前序遍历递归以及非递归算法
- 【LeetCode】Binary Tree Postorder Traversal 二叉树后序遍历递归以及非递归算法
- Leetcode 94:Binary Tree Inorder Traversal (二叉树中序遍历,非递归)
- 【leetcode】94Binary Tree Inorder Traversal(非递归中序遍历二叉树)
- Binary Tree Inorder Traversal 二叉树中序遍历,使用堆栈,非递归
- LeetCode Binary Tree Preorder Traversal (二叉树先序遍历非递归)
- LeetCode:Binary Tree Traversal(二叉树遍历非递归)
- Binary Tree Inorder Traversal 中序遍历二叉树 递归和非递归版
- leetcode 94. Binary Tree Inorder Traversal-中序遍历|递归|非递归
- leetcode_94. Binary Tree Inorder Traversal 二叉树的中序遍历,非递归算法,栈的思想
- LintCode Binary Tree Inorder Traversal 二叉树的中序遍历(非递归)
- LeetCode Binary Tree Preorder Traversal 前序遍历二叉树 递归和非递归解法
- LeetCode Binary Tree Postorder Traversal 二叉树后序遍历 递归和非递归解法
- [LeetCode] Binary Tree Inorder Traversal [递归版]
- 【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】
- 【LeetCode-面试算法经典-Java实现】【145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)】
- JavaScript 数组操作函数总结(push,pop,join,shift,unshift,slice,splice,concat)
- Python重写C语言程序100例--Part2
- Android中的socket编程(三)
- spring配置datasource三种方式
- mark1
- 【LeetCode】Binary Tree Inorder Traversal 二叉树中序遍历递归以及非递归算法
- 使用Xshell连接路由内部IP
- .Net framework概述
- Calabash-android
- 下班了下班了
- 软考之 编译原理
- [Ubuntu]MW150us-rtl8188eu 驱动编译安装
- 老是写这样的事开心吗
- Java函数式编程(十四)监控文件修改