@@ -319,6 +319,36 @@ func levelOrder(_ root: TreeNode?) -> [[Int]] {
319319}
320320```
321321
322+ Rust:
323+
324+ ``` rust
325+ pub fn level_order (root : Option <Rc <RefCell <TreeNode >>>) -> Vec <Vec <i32 >> {
326+ let mut ans = Vec :: new ();
327+ let mut stack = Vec :: new ();
328+ if root . is_none (){
329+ return ans ;
330+ }
331+ stack . push (root . unwrap ());
332+ while stack . is_empty ()!= true {
333+ let num = stack . len ();
334+ let mut level = Vec :: new ();
335+ for _i in 0 .. num {
336+ let tmp = stack . remove (0 );
337+ level . push (tmp . borrow_mut (). val);
338+ if tmp . borrow_mut (). left. is_some (){
339+ stack . push (tmp . borrow_mut (). left. take (). unwrap ());
340+ }
341+ if tmp . borrow_mut (). right. is_some (){
342+ stack . push (tmp . borrow_mut (). right. take (). unwrap ());
343+ }
344+ }
345+ ans . push (level );
346+ }
347+ ans
348+ }
349+ ```
350+
351+
322352** 此时我们就掌握了二叉树的层序遍历了,那么如下九道力扣上的题目,只需要修改模板的两三行代码(不能再多了),便可打倒!**
323353
324354
@@ -548,6 +578,35 @@ func levelOrderBottom(_ root: TreeNode?) -> [[Int]] {
548578}
549579```
550580
581+ Rust:
582+
583+ ``` rust
584+ pub fn level_order (root : Option <Rc <RefCell <TreeNode >>>) -> Vec <Vec <i32 >> {
585+ let mut ans = Vec :: new ();
586+ let mut stack = Vec :: new ();
587+ if root . is_none (){
588+ return ans ;
589+ }
590+ stack . push (root . unwrap ());
591+ while stack . is_empty ()!= true {
592+ let num = stack . len ();
593+ let mut level = Vec :: new ();
594+ for _i in 0 .. num {
595+ let tmp = stack . remove (0 );
596+ level . push (tmp . borrow_mut (). val);
597+ if tmp . borrow_mut (). left. is_some (){
598+ stack . push (tmp . borrow_mut (). left. take (). unwrap ());
599+ }
600+ if tmp . borrow_mut (). right. is_some (){
601+ stack . push (tmp . borrow_mut (). right. take (). unwrap ());
602+ }
603+ }
604+ ans . push (level );
605+ }
606+ ans
607+ }
608+ ```
609+
551610# 199.二叉树的右视图
552611
553612[ 力扣题目链接] ( https://leetcode-cn.com/problems/binary-tree-right-side-view/ )
0 commit comments