当前位置:网站首页>Leetcode daily question (971. flip binary tree to match preorder traversal)
Leetcode daily question (971. flip binary tree to match preorder traversal)
2022-07-06 06:35:00 【wangjun861205】
You are given the root of a binary tree with n nodes, where each node is uniquely assigned a value from 1 to n. You are also given a sequence of n values voyage, which is the desired pre-order traversal of the binary tree.
Any node in the binary tree can be flipped by swapping its left and right subtrees. For example, flipping node 1 will have the following effect:
Flip the smallest number of nodes so that the pre-order traversal of the tree matches voyage.
Return a list of the values of all flipped nodes. You may return the answer in any order. If it is impossible to flip the nodes in the tree to make the pre-order traversal match voyage, return the list [-1].
Example 1:
Input: root = [1,2], voyage = [2,1]
Output: [-1]
Explanation: It is impossible to flip the nodes such that the pre-order traversal matches voyage.
Example 2:
Input: root = [1,2,3], voyage = [1,3,2]
Output: [1]
Explanation: Flipping node 1 swaps nodes 2 and 3, so the pre-order traversal matches voyage.
Example 3:
Input: root = [1,2,3], voyage = [1,2,3]
Output: []
Explanation: The tree’s pre-order traversal already matches voyage, so no nodes need to be flipped.
Constraints:
- The number of nodes in the tree is n.
- n == voyage.length
- 1 <= n <= 100
- 1 <= Node.val, voyage[i] <= n
- All the values in the tree are unique.
- All the values in voyage are unique.
use preorder To traverse the tree , At the same time vayage Contrast , If the value of the left node is the same as voyage If the next value of is equal, the left node is used for the next traversal , If the value of the right node is the same as voyage The next value of is equal , Then use the node on the right to go through the next step . But if you need to traverse with the right node, it proves that the left and right nodes need to be interchanged , So the value of the current node needs to be added to the answer array .
use std::cell::RefCell;
use std::rc::Rc;
impl Solution {
fn rc(root: Option<Rc<RefCell<TreeNode>>>, voyage: &mut Vec<i32>) -> Vec<i32> {
if let Some(node) = root {
let v = voyage.remove(0);
if node.borrow().val != v {
return vec![-1];
}
let left = node.borrow_mut().left.take();
let right = node.borrow_mut().right.take();
let left_val = if let Some(l) = &left {
l.borrow().val
} else {
-1
};
let right_val = if let Some(r) = &right {
r.borrow().val
} else {
-1
};
if left_val == -1 && right_val == -1 {
return vec![];
}
if left_val == voyage[0] {
let mut l = Solution::rc(left, voyage);
if l == vec![-1] {
return vec![-1];
}
let mut r = Solution::rc(right, voyage);
if r == vec![-1] {
return vec![-1];
}
l.append(&mut r);
return l;
}
let mut l = Solution::rc(right, voyage);
if l == vec![-1] {
return vec![-1];
}
let mut r = Solution::rc(left, voyage);
if r == vec![-1] {
return vec![-1];
}
l.append(&mut r);
if left_val != -1 {
l.push(node.borrow().val);
}
return l;
}
vec![]
}
pub fn flip_match_voyage(
root: Option<Rc<RefCell<TreeNode>>>,
mut voyage: Vec<i32>,
) -> Vec<i32> {
Solution::rc(root, &mut voyage)
}
}
边栏推荐
- Convert the array selected by El tree into an array object
- Selenium source code read through · 9 | desiredcapabilities class analysis
- Black cat takes you to learn UFS protocol Chapter 18: how UFS configures logical units (Lu Management)
- 模拟卷Leetcode【普通】1062. 最长重复子串
- 今日夏至 Today‘s summer solstice
- 模拟卷Leetcode【普通】1296. 划分数组为连续数字的集合
- Distributed system basic (V) protocol (I)
- Simulation volume leetcode [general] 1405 Longest happy string
- Suspended else
- CS-证书指纹修改
猜你喜欢
私人云盘部署
在JEECG-boot代码生成的基础上修改list页面(结合自定义的组件)
端午节快乐Wish Dragon Boat Festival is happy
What are the commonly used English words and sentences about COVID-19?
LeetCode每日一题(971. Flip Binary Tree To Match Preorder Traversal)
Financial German translation, a professional translation company in Beijing
基於JEECG-BOOT的list頁面的地址欄參數傳遞
Office-DOC加载宏-上线CS
Modify the list page on the basis of jeecg boot code generation (combined with customized components)
SQL Server manager studio(SSMS)安装教程
随机推荐
The internationalization of domestic games is inseparable from professional translation companies
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Lecture 8: 1602 LCD (Guo Tianxiang)
Tms320c665x + Xilinx artix7 DSP + FPGA high speed core board
Basic knowledge of MySQL
[web security] nodejs prototype chain pollution analysis
org.activiti.bpmn.exceptions.XMLException: cvc-complex-type.2.4.a: 发现了以元素 ‘outgoing‘ 开头的无效内容
Fledgling Xiao Li's 103rd blog CC2530 resource introduction
Wish Dragon Boat Festival is happy
基于JEECG-BOOT制作“左树右表”交互页面
MFC dynamically creates dialog boxes and changes the size and position of controls
Simulation volume leetcode [general] 1218 Longest definite difference subsequence
Mise en œuvre d’une fonction complexe d’ajout, de suppression et de modification basée sur jeecg - boot
How do programmers remember code and programming language?
Simulation volume leetcode [general] 1061 Arrange the smallest equivalent strings in dictionary order
org. activiti. bpmn. exceptions. XMLException: cvc-complex-type. 2.4. a: Invalid content beginning with element 'outgoing' was found
mysql的基础命令
SQL Server manager studio(SSMS)安装教程
Past and present lives of QR code and sorting out six test points
JDBC requset corresponding content and function introduction