`

Binary Tree Inorder Traversal

阅读更多
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,递归
/**
 * 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> list = new ArrayList<Integer>();
        if(root == null) return list;
        getIT(root, list);
        return list;
    }
    public void getIT(TreeNode root, List<Integer> list) {
        if(root == null) return;
        getIT(root.left, list);
        list.add(root.val);
        getIT(root.right, list);
    }
}


2,迭代
/**
 * 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> list = new ArrayList<Integer>();
        Stack<TreeNode> stack = new Stack<TreeNode>();
        while(root != null || !stack.isEmpty()) {
            if(root != null) {
                stack.push(root);
                root = root.left;
            } else {
                TreeNode node = stack.pop();
                list.add(node.val);
                root = node.right;
            }
        }
        return list;
    }
}
分享到:
评论

相关推荐

    94.Binary Tree Inorder Traversal二叉树的中序遍历【LeetCode单题讲解系列】

    94.Binary_Tree_Inorder_Traversal二叉树的中序遍历【LeetCode单题讲解系列】

    Construct Binary Tree from Preorder and Inorder Traversal

    Construct Binary Tree from Preorder and Inorder Traversal 根据先序,中序建立二叉树

    c语言-leetcode题解之0094-binary-tree-inorder-traversal.zip

    其中,二叉树的中序遍历(binary tree inorder traversal)是数据结构中的一个经典算法问题。中序遍历的特点是先访问左子树,然后是根节点,最后是右子树,这种遍历方式适用于二叉搜索树,能够得到排序的序列。 在...

    js-leetcode题解之94-binary-tree-inorder-traversal.js

    在LeetCode上,问题编号94的题目“Binary Tree Inorder Traversal”就是要求对给定的二叉树进行中序遍历,并返回遍历的结果。给定的二叉树用JavaScript对象来表示,每个节点的值为一个数字,节点结构包含值、左子...

    【LeetCode】102. Binary Tree Level Order Traversal

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的...102. Binary Tree Leve

    陈越、何钦铭-数据结构作业11:Tree Traversals Again二叉树非递归遍历/栈遍历

    An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the ...

    leetcode-tree

    144-Binary Tree Preorder Traversal94-Binary Tree Inorder Traversal145-Binary Tree Postorder Traversal(后续的非递归时间不够可以先跳过,有点难)层次遍历,队列辅助,相当于广搜。102-Binary Tree Level ...

    105.construct binary tree from preorder and inorder traversal从前序和与中序遍历序列构造二叉树【LeetCode单题讲解系列】

    105.construct_binary_tree_from_preorder_and_inorder_traversal从前序

    Leetcode 使用 Javascript 的解决方案.zip

    Javascript 的解决方案Leetcode Problems and interview problems in ...Inorder Traversal.js106 Construct Binary Tree from Inorder and Postorder Traversal.js107 Binary Tree Level Order Traversal II.js108 ...

    Java Binary Tree Order

    `BinaryTree_InOrder.java`应该实现了这个过程,它使用递归或栈来实现。递归版本通常从左子节点开始,然后访问根节点,最后遍历右子节点。 3. **后序遍历(Postorder Traversal)** 后序遍历遵循“左-右-根”的...

    Binary tree traversal.zip

    在这个名为"Binary tree traversal.zip"的压缩包中,包含了作者在算法课上完成的一个关于二叉树遍历的作业。这个作业使用C++编程语言,并在Visual Studio 2019环境下编写。以下是关于二叉树遍历的详细知识: 1. **...

    python-leetcode题解之107-Binary-Tree-Level-Order-Traversal-II

    2. 在LeetCode平台上,问题编号107的题目是“Binary Tree Level Order Traversal II”,它要求对给定的二叉树进行反向层级遍历,即从最后一层到第一层的顺序输出节点值。 3. 反向层级遍历算法可以通过先进行正常的...

    高频算法合集.pdf

    10. 二叉树的中序遍历(Binary Tree Inorder Traversal):使用递归或迭代方式访问二叉树的所有节点。 11. 不同的二叉搜索树II(Different Binary Search Trees II):递归构造出所有可能的二叉搜索树。 12. 有效...

    leetcode530-leetcode:力扣在线评委

    leetcode 530 力扣在线评委 # 问题 困难 解决方案 1 简单的 2 中等的 3 中等的 12 中等的 22 中等的 ...Binary Tree ...Traversal ...Binary Tree Inorder Traversal 318. Maximum Product of Word Length

    python-leetcode题解之094-Binary-Tree-Inorder-Traversal

    在计算机科学中,二叉树是一种重要的数据结构,尤其在编程算法和数据组织方面发挥着关键作用。在二叉树中,节点最多有两个子节点,分别被称为左子节点和右子节点。中序遍历是一种递归遍历二叉树的算法,它按照左-根-...

    dna匹配leetcode-leetcode:leetcode刷题

    Inorder Traversal 栈 递归 Single Number 异或 Copy List with Random Pointer 单链表 map Max Points on a Line 斜率 map, int&gt; Fraction to Recurring Decimal map long long 正负号 Repeated DNA S

    leetcode常见的100热点算法题

    5. **二叉树与图**:二叉树题目如"Binary Tree Inorder Traversal"(二叉树的中序遍历)和"Lowest Common Ancestor of a Binary Tree"(二叉树的最近公共祖先),图题目如"Shortest Path in Bidirectional Graph"...

    LeetCode_java_leetcode_刷题_

    5. **递归与迭代**:如"Binary Tree Inorder Traversal"要求实现二叉树的中序遍历,递归和迭代都是常见的解题策略。 6. **设计模式**:一些题目会涉及单例模式、工厂模式等设计模式的应用,例如"Singleton"题目要求...

    二叉树详解 binary tree

    - 中序遍历 (Inorder Traversal) - 后序遍历 (Postorder Traversal) - 层次遍历 (Level Order Traversal) ##### 2.2 进阶操作 - **查找**: 在二叉树中查找特定的节点。 - **插入**: 向二叉树中插入新的节点。 -...

Global site tag (gtag.js) - Google Analytics