概述
#pragma once
#include<stdio.h>
#include<assert.h>
typedef struct Node{
int value;
struct Node *left;
struct Node *right;
}Node;
分析过程:
以前序遍历为例:
void preorderTraversal(Node * root){
//空数
if (root == NULL){
return;
}
printf("%d", root->value);
if (root->left != NULL){
preorderTraversal(root->left);
}
else{
preorderTraversal(NULL);//空传进去没用,还是返回了空
}
if (root->right != NULL){
preorderTraversal(root->right);
}
else{
preorderTraversal(NULL);
}
//只有一个节点的数
if (root->left == NULL&&root->right == NULL){
return;
}
//只有根加左子树的数
if (root->right == NULL){
preorderTraversal(root->left);
return;
}
//只有根加右子树的数
if (root->left == NULL){
preorderTraversal(root->right);
return;
}
只有根+右子树+左子树的树
preorderTraversal(root->right);
preorderTraversal(root->left);
}
//前序遍历
void preorderTraversal(Node * root){
//空数
if (root == NULL){
return;
}
printf("%d", root->value);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
//中序遍历
void InOrder(Node *root){
//空数
if (root == NULL){
return;
}
InOrder(root->left);
printf("%d", root->value);
InOrder(root->right);
}
//后序遍历
void AfterOrder(Node *root){
//空数
if (root == NULL){
return;
}
AfterOrder(root->left);
AfterOrder(root->right);
printf("%d", root->value);
}
//求树中节点个数
int count = 0;
int Size(Node *root){
if (root == NULL){
return 0;
}
count++;
Size(root->left);
Size(root->right);
}
最后
以上就是兴奋机器猫为你收集整理的二叉树的前序,中序,后续遍历,及求二叉树节点的个数的全部内容,希望文章能够帮你解决二叉树的前序,中序,后续遍历,及求二叉树节点的个数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复