Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1513688

Browse files
author
ruislan
committed
solved q1609
1 parent f73d1fa commit 1513688

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

‎src/q/mod.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,7 @@ mod q1592;
602602
mod q1600;
603603
mod q1603;
604604
mod q1608;
605+
mod q1609;
605606
mod q1614;
606607
mod q1619;
607608
mod q1624;

‎src/q/q1609.rs‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#[derive(Debug, PartialEq, Eq)]
2+
pub struct TreeNode {
3+
pub val: i32,
4+
pub left: Option<Rc<RefCell<TreeNode>>>,
5+
pub right: Option<Rc<RefCell<TreeNode>>>,
6+
}
7+
8+
#[allow(unused)]
9+
impl TreeNode {
10+
#[inline]
11+
pub fn new(val: i32) -> Self {
12+
TreeNode {
13+
val,
14+
left: None,
15+
right: None,
16+
}
17+
}
18+
}
19+
20+
use std::rc::Rc;
21+
use std::cell::RefCell;
22+
use crate::q::Solution;
23+
24+
#[allow(unused)]
25+
impl Solution {
26+
pub fn is_even_odd_tree(root: Option<Rc<RefCell<TreeNode>>>) -> bool {
27+
// 方法1
28+
// 层序遍历,按题目说明检查即可
29+
// AC 24ms 11.5mb 105/105
30+
use std::collections::VecDeque;
31+
let mut que = VecDeque::new();
32+
que.push_back(root);
33+
let mut level = 0;
34+
while !que.is_empty() {
35+
let size = que.len();
36+
let mut values = Vec::new();
37+
for _ in 0..size {
38+
let node = que.pop_front().unwrap();
39+
if let Some(node) = node {
40+
let mut node_ptr_mut = node.borrow_mut();
41+
que.push_back(node_ptr_mut.left.take());
42+
que.push_back(node_ptr_mut.right.take());
43+
values.push(node_ptr_mut.val);
44+
}
45+
}
46+
if level & 1 == 1 {
47+
if values.len() > 0 && values[0] & 1 == 1 { return false; }
48+
for i in 1..values.len() {
49+
if values[i] >= values[i - 1] || values[i] & 1 == 1 { return false; }
50+
}
51+
} else {
52+
if values.len() > 0 && values[0] & 1 == 0 { return false; }
53+
for i in 1..values.len() {
54+
if values[i] <= values[i - 1] || values[i] & 1 == 0 { return false; }
55+
}
56+
}
57+
level += 1;
58+
}
59+
true
60+
}
61+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /