LeetCode 94.二叉树的中序遍历

举报
赵KK日常技术记录 发表于 2023/06/29 21:20:23 2023/06/29
【摘要】 LeetCode 94首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,即左中右。但题目中其实是一个不太规则的非常常见的二叉树,如果补齐其中的节点就会舒服很多。这样是不是舒服多了?①在原图的1即为根节点,只不过此节点没有左节点,根据左中右的原则,第一个应该是1判断当前节点是否为null,为null直接返回②然后右节点为2,再判断2是否有左节点③2的左...

LeetCode 94

首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,即左中右

但题目中其实是一个不太规则的非常常见的二叉树,如果补齐其中的节点就会舒服很多。



这样是不是舒服多了?

①在原图的1即为根节点,只不过此节点没有左节点,根据左中右的原则,第一个应该是1

判断当前节点是否为null,为null直接返回

②然后右节点为2,再判断2是否有左节点

③2的左节点为3,在判断3是否有左节点,为null则添加进结果集,

再回到第②步判断2是否有右节点,发现为null则把2添加进结果集。

整个遍历结束。结果为:8471329

代码部分

import java.util.ArrayList;
import java.util.List;

/**
 * @author zkkstart
 * @create 2022-03-27 10:54
 */
public class TreeNode {


    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        helper(root,result);
        return result;
    }

    private void helper(TreeNode root, List<Integer> result) {
        if(root == null) return;
        helper(root.left,result);
        result.add(root.val);
        helper(root.right,result);
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。