前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树遍历

二叉树遍历

作者头像
OPice
发布2020-04-02 11:13:31
3620
发布2020-04-02 11:13:31
举报
文章被收录于专栏:D·技术专栏D·技术专栏

题目

给定一个二叉树,返回它的中序 遍历。

示例: 输入: [1,null,2,3] 1 2 / 3

输出: [1,3,2]

解答

代码语言:javascript
复制
第一种、递归遍历
public static List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> nodes = new ArrayList<>();
        return helper(root, nodes);
    }

    public static List<Integer> helper(TreeNode treeNode, List<Integer> list) {
        if (treeNode != null) {
            if (treeNode.left != null){
                helper(treeNode.left,list);
            }
            list.add(treeNode.val);
            if (treeNode.right != null){
                helper(treeNode.right,list);
            }
        }
        return list;
    }

第二种、使用栈的方式
 public static List<Integer> inorder(TreeNode treeNode, List<Integer> list) {
        Stack<TreeNode> stack = new Stack<>();

        TreeNode curr = treeNode;
        while (curr != null || !stack.isEmpty()) {
            while (curr != null) {
                stack.push(curr);
                curr = curr.left;
            }
            curr = stack.pop();
            list.add(curr.val);

            curr = curr.right;
        }
        return list;
    }

解析

1、使用递归的方式简单暴力 2、

  • 中序 :左 -> 根 -> 右
  • 前序 :根 -> 左 -> 右
  • 后序 :左 -> 右 -> 根

遍历树,总是从根开始,而中序需要左,这种结构使用栈的方式存储,右节点依次遍历。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解答
  • 解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档