Java实现LeetCode2196.根据描述创建二叉树

这篇文章介绍了一个编程问题,如何根据给定的父子节点关系数组descriptions构建一棵二叉树。使用HashMap存储节点,遍历数组并根据描述找到或创建父节点和子节点,最后返回构建的二叉树的根节点。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述
在这里插入图片描述

思路

比较简答的一道模拟题。descriptions[i][0]是父节点,descriptions[i][1]是子节点,description[i][2]指示左子节点或右子节点。

对description进行遍历,如果不存在父(子)节点,则new一个,否则从HashMap中get。

代码

class Solution {
    public TreeNode createBinaryTree(int[][] descriptions) {
        HashMap< Integer , TreeNode > hs = new HashMap();
        int len = descriptions.length;
        for( int i = 0 ; i < len ; i++ ){
            TreeNode son = null;
            if( !hs.containsKey( descriptions[i][1] ) ){
                son = new TreeNode( descriptions[i][1] );
                hs.put( descriptions[i][1] , son );
            }
            else{
                son = hs.get( descriptions[i][1] );
            }
            TreeNode father = null;
            if( !hs.containsKey( descriptions[i][0] ) ){
                father = new TreeNode( descriptions[i][0] );
                hs.put( descriptions[i][0] , father );
            }
            else{
                father = hs.get( descriptions[i][0] );
            }
            if( descriptions[i][2]==1 ) father.left = son;
            else father.right = son;
            
        }
        for( int i = 0 ; i < len ; i++ ){
            hs.remove( descriptions[i][1] );
        }
        for( int i : hs.keySet() ){
            return hs.get( i );
        }
        return null;
    }
}

思考

看完了题解评论区的大佬,对于description这种命名已经很长的数组,自己的命名可以简洁一些,增强可读性。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值