Create Binary Tree From Descriptions
给一个2d数组, 里面是一颗数, 用[parent, child, isleft]的形式表达, 求返回这个树.
这题建树不难, 找到root, 需要记录一下所有的parent, 因为只有一个root是不会成为别人的child的.
/**
* Definition for a binary tree node.
* 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 TreeNode createBinaryTree(int[][] descriptions) {
Map<Integer, TreeNode> map = new HashMap<>();
Set<Integer> set = new HashSet<>(); // use to find the root;
for(int[] d : descriptions){
TreeNode node = map.getOrDefault(d[0], new TreeNode(d[0]));
TreeNode child = map.getOrDefault(d[1], new TreeNode(d[1]));
if(d[2] == 1){
node.left = child;
}
else
{
node.right = child;
}
map.put(d[0], node);
map.put(d[1], child);
set.add(d[0]);
}
for(int[] d : descriptions){
set.remove(d[1]);
}
return map.get(set.iterator().next());
}
}