【LeetCode-面试算法经典-Java实现】【094-Binary Tree Inorder Traversal(二叉树中序遍历)】

来源:互联网 发布:windows重置此电脑失败 编辑:程序博客网 时间:2024/05/29 04:34

【094-Binary Tree Inorder Traversal(二叉树中序遍历)】


【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

原题

  Given a binary tree, return the inorder traversal of its nodes’ values.

题目大意

  对一棵二叉树进行中序遍历。

解题思路

  解法一:递归实现,解法二:迭代实现。

代码实现

二叉树结点类

public class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) { val = x; }}

算法实现类,解法一

import java.util.LinkedList;import java.util.List;public class Solution {    private List<Integer> result;    public List<Integer> inorderTraversal(TreeNode root) {        result = new LinkedList<>();        inOrder(root);        return result;    }    private void inOrder(TreeNode root) {        if (root != null) {            inOrder(root.left);            result.add(root.val);            inOrder(root.right);        }    }}

算法实现类,解法一

import java.util.LinkedList;import java.util.List;public class Solution {    public List<Integer> inorderTraversal(TreeNode root) {        List<Integer> result = new LinkedList<>();        LinkedList<TreeNode> stack = new LinkedList<>();        TreeNode node = root;        while (node != null || !stack.isEmpty()) {            while (node != null) {                stack.addLast(node);                node = node.left;            }            if (!stack.isEmpty()) {                node = stack.removeLast();                result.add(node.val);                node = node.right;            }        }        System.out.println(result);        return result;    }}

评测结果

  点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。

解法一
这里写图片描述
解法二
这里写图片描述

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47310553】

2 1
原创粉丝点击