剑指offer---二叉树的深度

题目描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

只有一个结点的时候,二叉树的高度为1。
解法一:非递归写法,使用层次遍历

int TreeDepth(TreeNode* pRoot){
	if(pRoot ==NULL){
		return 0;
	}
	int depth = 0;
	queue<TreeNode*> q;
	q.push(pRoot);
	while(!q.empty()){
		int size = q.size();
		depth++;
		while(size != 0){
			TreeNode* node = q.front();
			if(node->left){
				q.push(node->left);
			}
			if(node->right){
				q.push(node->right);
			}
			q.pop();
			size--;
		}	
	}
	return depth;
}

解法二:递归遍历

int TreeDepth(TreeNode* pRoot){
	int left_depth,right_depth;
	if(pRoot != NULL){
		left_depth= TreeDepth(pRoot->left);
		right_depth= TreeDepth(pRoot->right);
		if(left_depth< right_depth){
			return right_depth+ 1;
		}else{
			return left_depth+ 1;
		}
	}
	return 0;
}
发布了102 篇原创文章 · 获赞 21 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/guanripeng/article/details/104661874