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

题目描述

Java实现LeetCode2196.根据描述创建二叉树_第1张图片
Java实现LeetCode2196.根据描述创建二叉树_第2张图片

思路

比较简答的一道模拟题。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这种命名已经很长的数组,自己的命名可以简洁一些,增强可读性。

你可能感兴趣的:(java,开发语言,leetcode)