天天看點

求二叉樹的深度

#include<iostream>
#include<stack>
using namespace std;
//求二叉樹的深度
struct binaryTreeNode
{
	int value;
	binaryTreeNode *pLeft;
	binaryTreeNode *pRight;
};


//遞歸
int bstDepth_recursive(binaryTreeNode *pRoot)
{
	if(NULL==pRoot)
	{
		return 0;
	}
	int leftDepth=bstDepth_recursive(pRoot->pLeft);
	int rightDepth=bstDepth_recursive(pRoot->pRight);
	return (leftDepth>rightDepth)?(leftDepth+1):(rightDepth+1);
}


int main()
{
	binaryTreeNode n1,n2,n3,n4,n5,n6,n7;
	n1.value=1,n2.value=2,n3.value=3,n4.value=4;
	n5.value=5,n6.value=6,n7.value=7;
	n1.pLeft=&n2,n1.pRight=&n3;
	n2.pLeft=&n4,n2.pRight=&n5;
	n3.pLeft=NULL,n3.pRight=&n6;
	n4.pLeft=NULL,n4.pRight=NULL;
	n5.pLeft=&n7,n5.pRight=NULL;
	n6.pLeft=NULL,n6.pRight=NULL;
	n7.pLeft=NULL,n7.pRight=NULL;
	binaryTreeNode *pRoot=&n1;
	cout<<bstDepth_recursive(pRoot)<<endl;
	return 0;
}


           

繼續閱讀