题解 | #二叉树的中序遍历#

二叉树的中序遍历

https://www.nowcoder.com/practice/0bf071c135e64ee2a027783b80bf781d

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return int整型一维数组
     */
    public int[] inorderTraversal (TreeNode root) {
        // write code here
        Stack<TreeNode> sta = new Stack<>();
        List<Integer> res = new ArrayList<>();
        while (!sta.empty() || root != null) {
            while (root != null) {
                sta.push(root);
                root = root.left;
            }
            TreeNode tmp = sta.pop();
            res.add(tmp.val);
            root = tmp.right;
        }
        return res.stream().mapToInt(Integer::intValue).toArray();
    }
}

全部评论
栈不空 和 根不空 根不空 一直向右加入栈 栈不空 弹出栈顶元素加入结果 并将栈顶元素的右节点加入栈 因为中序遍历从最左下的开始 然后是根 然后是右节点
点赞 回复 分享
发布于 01-19 10:47 北京

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务