我是靠谱客的博主 兴奋机器猫,最近开发中收集的这篇文章主要介绍二叉树的前序,中序,后续遍历,及求二叉树节点的个数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是兴奋机器猫为你收集整理的二叉树的前序,中序,后续遍历,及求二叉树节点的个数的全部内容,希望文章能够帮你解决二叉树的前序,中序,后续遍历,及求二叉树节点的个数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部