首先,我们得先知道二叉树的最大深度,以及最小深度所代表的是什么:
1、最大深度是指从根节点到叶子节点的节点个数,也可以看作是根节点到叶子节点的最远最长路径数(假定根节点为初始则开始数目为1,注:根节点不为空),根节点的高度就是二叉树的最大深度。
2、最小深度是指从根节点到叶子节点的节点个数,也可以看作是根节点到叶子节点的最近最短路径数。
准确来说,最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
什么是叶子节点,左右孩子都为空时的节点叫做叶子节点!
需要注意的是,只有当左右孩子都为空的时候,才说明遍历的最低点了。如果其中一个孩子为空则不是最低点
3、n叉树则需知道该节点的结构中含有n个指针,即有n个孩子节点,代码中的node->children.size()指的就是n
//求二叉树最大深度(先序遍历)涉及回溯
void getdepth(TreeNode* node, int depth) {
int result = depth > result ? depth : result;
if (node->left == NULL && node->right == NULL) return;
if (node->left) {
depth++;
getdepth(node->left, depth);
depth--;
}
if (node->right) {
depth++;
getdepth(node->right, depth);