深度linux node,二叉树的深度_Linux编程_Linux公社-Linux系统门户网站

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

#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;

}

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值