LeetCode 94 Binary Tree Inorder Traversal (中序遍历二叉树)
来源:互联网 发布:java 密码加密解密 编辑:程序博客网 时间:2024/05/29 18:00
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree [1,null,2,3]
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
题目链接:https://leetcode.com/problems/binary-tree-inorder-traversal/
题目分析:中序遍历二叉树,递归的方法简单明了,不多说了
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { void DFS(TreeNode root, List<Integer> ans) { if(root == null) { return; } DFS(root.left, ans); ans.add(root.val); DFS(root.right, ans); } public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<>(); DFS(root, ans); return ans; }}
下面是非递归的做法,用一个栈模拟递归的过程,中序遍历的顺序是 左->中->右,先一直走到最左端,取值后pop,这个过程其实完成了左->中的遍历,每次pop后再往右走,这样就完成了左->中->右的遍历
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); while(root != null || !stack.empty()) { while(root != null) { stack.push(root); root = root.left; } if(!stack.empty()) { root = stack.peek(); stack.pop(); ans.add(root.val); root = root.right; } } return ans; }}
1 0
- LeetCode Binary Tree Inorder Traversal 中序遍历二叉树
- 【leetcode】94Binary Tree Inorder Traversal(非递归中序遍历二叉树)
- LeetCode 94 Binary Tree Inorder Traversal (中序遍历二叉树)
- LeetCode-94-Binary Tree Inorder Traversal 中序遍历二叉树
- 94.LeetCode Binary Tree Inorder Traversal(medium)[中序遍历二叉树 树的遍历]
- Binary Tree Inorder Traversal 二叉树的中序遍历
- 二叉树的中序遍历 Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal 二叉树的中序遍历
- LeetCode 94 Binary Tree Inorder Traversal(二叉树的中序遍历)+(二叉树、迭代)
- LeetCode 94:Binary Tree Inorder Traversal(中序遍历)
- LeetCode | Binary Tree Inorder Traversal(二叉树的中序遍历)
- LeetCode—***Binary Tree Inorder Traversal二叉树的中序遍历
- LeetCode OJ 之 Binary Tree Inorder Traversal (二叉树的中序遍历)
- LeetCode 94. Binary Tree Inorder Traversal(二叉树的中序遍历)
- [LeetCode]94. Binary Tree Inorder Traversal--二叉树的中序遍历
- 【LeetCode】Binary Tree Inorder Traversal二叉树的中序遍历
- LeetCode 94 Binary Tree Inorder Traversal(二叉树中序遍历)
- 【LeetCode】Construct Binary Tree From Inorder And Postorder Traversal 中序遍历和后序遍历树构造二叉树
- 冒泡排序示例
- Error:Execution failed for task ':app:mergeDebugResources
- Service
- linux fork()笔记
- 自己解决基于MQTT的android推送
- LeetCode 94 Binary Tree Inorder Traversal (中序遍历二叉树)
- AngularJS ui-router (嵌套路由)
- 装配Bean:XML与JavaConfig混合装配
- DBN学习资料
- Netmask (子网掩码 )的用途与子网络的切分
- Androidstudio工具下的JNI开发环境搭建
- 连接redis的方法
- nginx的http模块开发(直接发送html文件方式)
- 基于MVC架构写一个UI框架