当前位置:网站首页>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)
}
}
边栏推荐
- Simulation volume leetcode [general] 1219 Golden Miner
- 如何将flv文件转为mp4文件?一个简单的解决办法
- 翻译生物医学说明书,英译中怎样效果佳
- 模拟卷Leetcode【普通】1061. 按字典序排列最小的等效字符串
- [ 英语 ] 语法重塑 之 英语学习的核心框架 —— 英语兔学习笔记(1)
- SQL Server manager studio(SSMS)安装教程
- 記一個基於JEECG-BOOT的比較複雜的增删改功能的實現
- [ 英语 ] 语法重塑 之 动词分类 —— 英语兔学习笔记(2)
- Lecture 8: 1602 LCD (Guo Tianxiang)
- Py06 字典 映射 字典嵌套 键不存在测试 键排序
猜你喜欢

Transfert des paramètres de la barre d'adresse de la page de liste basée sur jeecg - boot

What are the commonly used English words and sentences about COVID-19?

字幕翻译中翻英一分钟多少钱?

英语论文翻译成中文字数变化

生物医学本地化翻译服务

Biomedical localization translation services

论文翻译英译中,怎样做翻译效果好?

CS certificate fingerprint modification

Mise en œuvre d’une fonction complexe d’ajout, de suppression et de modification basée sur jeecg - boot

端午节快乐Wish Dragon Boat Festival is happy
随机推荐
今日夏至 Today‘s summer solstice
Cannot create poolableconnectionfactory (could not create connection to database server. error
CS通过(CDN+证书)powershell上线详细版
Today's summer solstice
如何将flv文件转为mp4文件?一个简单的解决办法
Py06 dictionary mapping dictionary nested key does not exist test key sorting
Difference between backtracking and recursion
My daily learning records / learning methods
[Tera term] black cat takes you to learn TTL script -- serial port automation skill in embedded development
模拟卷Leetcode【普通】1314. 矩阵区域和
JDBC requset corresponding content and function introduction
Oscp raven2 target penetration process
基于JEECG-BOOT制作“左树右表”交互页面
記一個基於JEECG-BOOT的比較複雜的增删改功能的實現
How effective is the Chinese-English translation of international economic and trade contracts
How much is it to translate Chinese into English for one minute?
模拟卷Leetcode【普通】1218. 最长定差子序列
Past and present lives of QR code and sorting out six test points
Delete the variables added to watch1 in keil MDK
Lesson 7 tensorflow realizes convolutional neural network