查看“二叉树的中序遍历”的源代码
←
二叉树的中序遍历
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 中序 == <pre> 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树 相对于根来说, * 中序指 根 中间次序访问 * 先序指 根 首先访问 * 后续指 根 最后访问 </pre> == 描述 == === leetcode === https://leetcode-cn.com/problems/binary-tree-inorder-traversal/description/<br /> https://leetcode.com/problems/binary-tree-inorder-traversal/description/ === 问题 === <pre> 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] </pre> == 递归 == <source lang="java"> /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); inorder(root, result); return result; } private void inorder(TreeNode root, List<Integer> res) { if(root != null) { inorder(root.left, res); res.add(root.val); inorder(root.right, res); } } } </source> == 迭代 == <source lang="java"> /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { /** * 栈里保存的是 非叶节点 */ public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); TreeNode cur = root; while(cur != null || !stack.empty()) { while(cur != null) { // 栈里保存的是 非叶节点 stack.push(cur); cur = cur.left; } cur = stack.pop(); result.add(cur.val); cur = cur.right; } return result; } } </source> [[category: 算法]] [[category: leetcode]] [[category: 树]]
返回至
二叉树的中序遍历
。
导航菜单
个人工具
创建账户
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息