设为首页 加入收藏

TOP

二叉树的深度
2014-11-23 21:26:35 来源: 作者: 【 】 浏览:18
Tags:深度

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


#include
using namespace std;


struct BinaryTreeNode
{
int data;
struct BinaryTreeNode *lchild;
struct BinaryTreeNode *rchild;
};


typedef struct BinaryTreeNode BinTreeNode;


//先序构造二叉树
BinTreeNode* preOrderCreateTree(BinTreeNode *head)
{
int tmp;
cin >> tmp;
if (tmp == 0)
head = NULL;
else
{
head = new BinTreeNode;
head->data = tmp;
head->lchild = preOrderCreateTree(head->lchild);
head->rchild = preOrderCreateTree(head->rchild);
}

return head;
}


//先序遍历二叉树
void preVisitTree(const BinTreeNode *head)
{
if (head == NULL)
return;

cout << head->data;
preVisitTree(head->lchild);
preVisitTree(head->rchild);
}


void freeTree(BinTreeNode *head)
{
if (head == NULL)
return;

freeTree(head->lchild);
freeTree(head->rchild);
delete head;
}


int getTreeDeep(const BinTreeNode *head)
{
if (head == NULL)
return 0;
int lDeep = getTreeDeep(head->lchild);
int rDeep = getTreeDeep(head->rchild);
return (lDeep > rDeep) lDeep+1:rDeep+1;
}


int main()
{
BinTreeNode *root = preOrderCreateTree(root);
if (root)
cout << "deep: " << getTreeDeep(root) << endl;
freeTree(root);
return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇二叉树的镜像 下一篇从上往下打印二叉树

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: