题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
直接遍历所有节点就行~代码如下
//二元树的深度 #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; }