Skip to content

Commit eb88a78

Browse files
committed
feat: add solutions to lcof problem: No.32 - |
面试题32 - I. 从上到下打印二叉树
1 parent 6f56400 commit eb88a78

File tree

3 files changed

+157
-0
lines changed

3 files changed

+157
-0
lines changed

lcof/面试题32 - I. 从上到下打印二叉树/README.md

+84
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,90 @@ public:
182182
};
183183
```
184184

185+
### **TypeScript**
186+
187+
```ts
188+
/**
189+
* Definition for a binary tree node.
190+
* class TreeNode {
191+
* val: number
192+
* left: TreeNode | null
193+
* right: TreeNode | null
194+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
195+
* this.val = (val===undefined ? 0 : val)
196+
* this.left = (left===undefined ? null : left)
197+
* this.right = (right===undefined ? null : right)
198+
* }
199+
* }
200+
*/
201+
202+
function levelOrder(root: TreeNode | null): number[] {
203+
const res = [];
204+
if (root == null) {
205+
return res;
206+
}
207+
208+
const arr = [root];
209+
let i = 0;
210+
while (i < arr.length) {
211+
const { val, left, right } = arr[i];
212+
res.push(val);
213+
left && arr.push(left);
214+
right && arr.push(right);
215+
i++;
216+
}
217+
return res;
218+
}
219+
220+
```
221+
222+
### **Rust**
223+
224+
```rust
225+
// Definition for a binary tree node.
226+
// #[derive(Debug, PartialEq, Eq)]
227+
// pub struct TreeNode {
228+
// pub val: i32,
229+
// pub left: Option<Rc<RefCell<TreeNode>>>,
230+
// pub right: Option<Rc<RefCell<TreeNode>>>,
231+
// }
232+
//
233+
// impl TreeNode {
234+
// #[inline]
235+
// pub fn new(val: i32) -> Self {
236+
// TreeNode {
237+
// val,
238+
// left: None,
239+
// right: None
240+
// }
241+
// }
242+
// }
243+
use std::rc::Rc;
244+
use std::cell::RefCell;
245+
use std::collections::VecDeque;
246+
247+
impl Solution {
248+
pub fn level_order(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
249+
let mut res = Vec::new();
250+
let mut queue = VecDeque::new();
251+
if let Some(node) = root {
252+
queue.push_back(node);
253+
}
254+
while let Some(node) = queue.pop_front() {
255+
let mut node = node.borrow_mut();
256+
res.push(node.val);
257+
if let Some(l) = node.left.take() {
258+
queue.push_back(l);
259+
}
260+
if let Some(r) = node.right.take() {
261+
queue.push_back(r);
262+
}
263+
}
264+
res
265+
}
266+
}
267+
```
268+
185269
### **...**
186270

187271
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Definition for a binary tree node.
2+
// #[derive(Debug, PartialEq, Eq)]
3+
// pub struct TreeNode {
4+
// pub val: i32,
5+
// pub left: Option<Rc<RefCell<TreeNode>>>,
6+
// pub right: Option<Rc<RefCell<TreeNode>>>,
7+
// }
8+
//
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+
use std::rc::Rc;
20+
use std::cell::RefCell;
21+
use std::collections::VecDeque;
22+
23+
impl Solution {
24+
pub fn level_order(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
25+
let mut res = Vec::new();
26+
let mut queue = VecDeque::new();
27+
if let Some(node) = root {
28+
queue.push_back(node);
29+
}
30+
while let Some(node) = queue.pop_front() {
31+
let mut node = node.borrow_mut();
32+
res.push(node.val);
33+
if let Some(l) = node.left.take() {
34+
queue.push_back(l);
35+
}
36+
if let Some(r) = node.right.take() {
37+
queue.push_back(r);
38+
}
39+
}
40+
res
41+
}
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
function levelOrder(root: TreeNode | null): number[] {
16+
const res = [];
17+
if (root == null) {
18+
return res;
19+
}
20+
21+
const arr = [root];
22+
let i = 0;
23+
while (i < arr.length) {
24+
const { val, left, right } = arr[i];
25+
res.push(val);
26+
left && arr.push(left);
27+
right && arr.push(right);
28+
i++;
29+
}
30+
return res;
31+
}

0 commit comments

Comments
 (0)