代码随想录 第八章 二叉树02

8、二叉数的最大深度

leetcode104:二叉数的最大深度

求一棵二叉树的最大深度,跟节点的深度为1.

(1)、递归法

因为要通过递归函数的返回值计算树的高度,所以本题需要使用后序遍历(左->右->中)。

先求左子树的深度,再求右字树的深度,最后取左右深度中的最大值再加1。就是当前节点为跟节点的树的深度。

int GetMaxDepth(BitNode* root) {
	if (root == nullptr) {
		return 0;
	}
	int leftdepth = GetMaxDepth(root->lchild);
	int rightdepth = GetMaxDepth(root->rchild);
	return max(leftdepth, rightdepth) + 1;
}

(2)、迭代法

在二叉树中,一层一层地遍历二叉树,遍历的层数就是二叉树的深度,如果使用迭代法,那么使用层序遍历是最合适的。

int GetMaxDepthIter(BitNode* root) {
	if (root == nullptr) {
		return 0;
	}
	queue que;
	que.push(root);
	int depth = 0;
	while (!que.empty()) {
		int size = que.size();
		for (int i = 0; i < size; i++) {
			BitNode* node = que.front();
			que.pop();
			if (node->lchild != nullptr) {
				que.push(node->lchild);
			}
			if (node->rchild != nullptr) {
				que.push(node->rchild);
			}
			
		}
		depth++;
	}
	return depth;
}

9、二叉树的最小深度

你可能感兴趣的:(算法,数据结构)