「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
❓ 实现以下接口 ❔
1 | c复制代码// 二叉树节点个数 |
❗ 实现代码 ❕
❤ BinaryTreeSize ❤
🔑 核心思想1 :使用前序 || 中序 || 后序遍历,全局变量记录
❌ 但是以下代码有 Bug :如果采用前序重复遍历 2 次
✔ 经查,问题出在全局变量上,这里只需要在第 2 次遍历时置 0 即可
⚠ 在以后的知识面更大后,其实你会发现这种操作还有线程安全的问题
🔑 核心思想 2:函数使用带返回值的方式,其内部的递归本质上是一个后序遍厉
❤ BinaryTreeLeafSize ❤
🔑 核心思想 :以 left 和 right 为标志,如果都为 NULL,则累加
❤ BinaryTreeLevelKSize ❤
🔑 核心思想 :求当前树的第 k 层 = 左子树的第 k - 1 层 + 右子树的第 k - 1 层 (当 k = 1 时,说明此层就是目标层)
❤ BinaryTreeDepth ❤
🔑 核心思想 :当前树的深度 = max (左子树的深度,右子树的深度) + 1
❤ BinaryTreeFind ❤
🔑 核心思想 :
1、先判断是不是当前节点,是就返回;
2、先去左树找,找到就返回
3、左树没找到,再找右树
1 | c复制代码#include<stdio.h> |
本文转载自: 掘金