实现二叉树的基本算法: (1)创建二叉树 (2)二叉树的遍历 (3)求二叉树的深度 (4)求二叉树的叶子数
时间: 2023-11-14 10:28:49 浏览: 79
好,我来为您介绍实现二叉树的基本算法。
(1)创建二叉树
二叉树的创建可以通过递归实现。首先创建一个空节点,然后依次输入左右子树的值,如果左右子树的值为空,则为NULL。具体代码如下:
```c++
#include<iostream>
using namespace std;
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
TreeNode* createTree(){
int val;
cin>>val;
if(val == -1){
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createTree();
root->right = createTree();
return root;
}
```
(2)二叉树的遍历
二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。可以通过递归实现。具体代码如下:
前序遍历:
```c++
void preorder(TreeNode* root){
if(root == NULL){
return;
}
cout<<root->val<<" ";
preorder(root->left);
preorder(root->right);
}
```
中序遍历:
```c++
void inorder(TreeNode* root){
if(root == NULL){
return;
}
inorder(root->left);
cout<<root->val<<" ";
inorder(root->right);
}
```
后序遍历:
```c++
void postorder(TreeNode* root){
if(root == NULL){
return;
}
postorder(root->left);
postorder(root->right);
cout<<root->val<<" ";
}
```
(3)求二叉树的深度
求二叉树的深度可以通过递归实现。具体代码如下:
```c++
int maxDepth(TreeNode* root){
if(root == NULL){
return 0;
}
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return max(leftDepth,rightDepth) + 1;
}
```
(4)求二叉树的叶子数
求二叉树的叶子数可以通过递归实现。具体代码如下:
```c++
int leafNum(TreeNode* root){
if(root == NULL){
return 0;
}
if(root->left == NULL && root->right == NULL){
return 1;
}
int leftNum = leafNum(root->left);
int rightNum = leafNum(root->right);
return leftNum + rightNum;
}
```
以上就是二叉树的基本算法的实现,希望对您有所帮助。
阅读全文