二元树的深度

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

直接遍历所有节点就行~代码如下 

//二元树的深度
#include<iostream>
using namespace std;
struct treenode{
	int data;
	treenode *l;
	treenode *r;
};
void create(treenode *&t){  //建树
	t->data=10;
	t->l=new treenode();
	t->l->data=6;
	t->l->l=new treenode();
	t->l->l->data=4;
	t->l->l->l=NULL;
	t->l->l->r=NULL;
	t->l->r=new treenode();
	t->l->r->data=8;
	t->l->r->l=NULL;
	t->l->r->r=NULL;

	t->r=new treenode();
	t->r->data=14;
	t->r->l=new treenode();
	t->r->l->data=12;
	t->r->l->l=NULL;
	t->r->l->r=NULL;
	t->r->r=new treenode();
	t->r->r->data=16;
	t->r->r->l=NULL;
	t->r->r->r=NULL;

}
void find_depth(treenode *tree,int depth,int &max){
	if(!tree->l&&!tree->r&&max<depth) max=depth;
	else if(tree->l) find_depth(tree->l,++depth,max);
	else find_depth(tree->r,++depth,max);
}
int main(void){
	int max=-1;
	treenode *tree=new treenode;
	create(tree);
	find_depth(tree,1,max);
	cout<<max<<endl;
	return 0;
}

原文地址:https://www.cnblogs.com/aLittleBitCool/p/1977585.html