计算叶节点数
(&self)
| 86 | |
| 87 | // 计算叶节点数 |
| 88 | fn leaf_size(&self) -> usize { |
| 89 | // 都为空,当前节点就是叶节点,返回 1 |
| 90 | if self.left.is_none() && self.right.is_none() { |
| 91 | return 1; |
| 92 | } |
| 93 | |
| 94 | // 计算左右子树的叶节点数 |
| 95 | let left_leaf = match &self.left { |
| 96 | Some(left) => left.leaf_size(), |
| 97 | None => 0, |
| 98 | }; |
| 99 | let right_leaf = match &self.right { |
| 100 | Some(right) => right.leaf_size(), |
| 101 | None => 0, |
| 102 | }; |
| 103 | |
| 104 | // 左右子树叶节点数之和 = 总叶节点数 |
| 105 | left_leaf + right_leaf |
| 106 | } |
| 107 | |
| 108 | // 计算非叶节点数 [千万不要想复杂了] |
| 109 | fn none_leaf_size(&self) -> usize { |