当前位置:网站首页>Leetcode daily question (2196. create binary tree from descriptions)
Leetcode daily question (2196. create binary tree from descriptions)
2022-07-28 13:01:00 【wangjun861205】
You are given a 2D integer array descriptions where descriptions[i] = [parenti, childi, isLefti] indicates that parenti is the parent of childi in a binary tree of unique values. Furthermore,
If isLefti == 1, then childi is the left child of parenti.
If isLefti == 0, then childi is the right child of parenti.
Construct the binary tree described by descriptions and return its root.
The test cases will be generated such that the binary tree is valid.
Example 1:

Input: descriptions = [[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]]
Output: [50,20,80,15,17,19]
Explanation: The root node is the node with value 50 since it has no parent.
The resulting binary tree is shown in the diagram.
Example 2:

Input: descriptions = [[1,2,1],[2,3,0],[3,4,1]]
Output: [1,2,null,null,3,4]
Explanation: The root node is the node with value 1 since it has no parent.
The resulting binary tree is shown in the diagram.
Constraints:
- 1 <= descriptions.length <= 104
- descriptions[i].length == 3
- 1 <= parenti, childi <= 105
- 0 <= isLefti <= 1
- The binary tree described by descriptions is valid.
Find the root node , Then build the whole tree from top to bottom according to the relationship
use std::cell::RefCell;
use std::collections::{
HashMap, HashSet};
use std::rc::Rc;
impl Solution {
fn build(root: i32, children: &HashMap<i32, Vec<i32>>) -> Option<Rc<RefCell<TreeNode>>> {
if root == -1 {
return None;
}
let mut node = TreeNode::new(root);
if let Some(c) = children.get(&root) {
node.left = Solution::build(c[0], children);
node.right = Solution::build(c[1], children);
}
Some(Rc::new(RefCell::new(node)))
}
pub fn create_binary_tree(descriptions: Vec<Vec<i32>>) -> Option<Rc<RefCell<TreeNode>>> {
let mut children = HashMap::new();
let mut root = HashSet::new();
let mut removed = HashSet::new();
for desc in descriptions {
children.entry(desc[0]).or_insert(vec![-1, -1])[(desc[2] - 1).abs() as usize] = desc[1];
if !removed.contains(&desc[0]) {
root.insert(desc[0]);
}
root.remove(&desc[1]);
removed.insert(desc[1]);
}
if root.len() != 1 {
unreachable!()
}
for r in root {
return Solution::build(r, &children);
}
unreachable!()
}
}
边栏推荐
- Quick read in
- 05 pyechars basic chart (example code + effect diagram)
- Full disclosure! Huawei cloud distributed cloud native technology and Practice
- C structure use
- Using dependent packages to directly implement paging and SQL statements
- Connected Block & food chain - (summary of parallel search set)
- VS1003 debugging routine
- 机器学习基础-集成学习-13
- Code layered management of interface testing based on RF framework
- SQL most commonly used basic operation syntax
猜你喜欢

非标自动化设备企业如何借助ERP系统,做好产品质量管理?

How to view win11 system and reserved space?

Hc-05 Bluetooth module debugging slave mode and master mode experience

Change the document type in endnode and import it in word

SQL most commonly used basic operation syntax

03 pyechars rectangular coordinate system chart (example code + effect drawing)

How to open the power saving mode of win11 system computer

Leetcode 1518. wine change

Application and download of dart 3D radiative transfer model

LeetCode 42.接雨水
随机推荐
线性分类器(CCF20200901)
[graduation design teaching] ultrasonic ranging system based on single chip microcomputer - Internet of things embedded stm32
STM32F103 several special pins are used as ordinary io. Precautions and data loss of backup register 1,2
Jetpack Compose 完全脱离 View 系统了吗?
Summary: idea problem record
Leetcode94. Middle order traversal of binary trees
04 pyechars geographic chart (example code + effect diagram)
Hc-05 Bluetooth module debugging slave mode and master mode experience
Vs code is not in its original position after being updated
Leetcode 42. rainwater connection
A brief introduction to the for loop. Some of the code involves arrays
云原生—运行时环境
【嵌入式C基础】第8篇:C语言数组讲解
What if win11 cannot recognize Ethernet
Qt 信号和槽机制( 详解 )
【嵌入式C基础】第2篇:进制转换与BCD编码
Leetcode 1518. wine change
[base] what is the optimization of optimization performance?
Uncover why devaxpress WinForms, an interface control, discards the popular maskbox property
Initialization examples of several modes of mma8452q