概念:二叉树的深度是指树中结点的最大深度(通俗的说 ,从根节点到最底层的叶子结点的行数便是二叉树的深度)。
C++代码:
#define _CRT_SECURE_NO_WARNINNGS
#include<iostream>
using namespace std;
//二叉树结点
typedef struct BINARYTREENODE {
char root;
struct BINARYTREENODE *lchild;
struct BINARYTREENODE *rchild;
}BinaryTreeNode;
//创建二叉树
BinaryTreeNode* CreateBinaryTree() {
char ch;
cin >> ch;
BinaryTreeNode *node;
if (ch == '#') {
node = NULL;
}
else {
node = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode));
if (ch) {
node->root = ch;
node->lchild = CreateBinaryTree();
node->rchild = CreateBinaryTree();
}
}
return node;
}
//二叉树深度
int BinaryTreeDepth(BinaryTreeNode* root) {
if (root == NULL) {
return 0;
}
int depth = 0;
int leftdepth = BinaryTreeDepth(root->lchild);
int rightdepth = BinaryTreeDepth(root->rchild);
depth = leftdepth > rightdepth ? leftdepth + 1: rightdepth +1;
return depth;
}
//销毁二叉树
void FreeBinaryTree(BinaryTreeNode *root) {
if (root != NULL) {
if (root->lchild != NULL) {
FreeBinaryTree(root->lchild);
}
if (root->rchild != NULL) {
FreeBinaryTree(root->rchild);
}
free(root);
root = NULL;
}
}
int main() {
//创建二叉树
BinaryTreeNode *root = CreateBinaryTree();
//二叉树深度
int depth = BinaryTreeDepth(root);
cout << "BinaryTreeDepth:" << depth;
//销毁二叉树
FreeBinaryTree(root);
return 0;
}
C++运行结果:
说明:在代码的第35行处,返回值必须为0,代表结点为空时,深度为 0。