我是靠谱客的博主 坚定睫毛,最近开发中收集的这篇文章主要介绍二叉树动态链式创建以及遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//  main.cpp
//  BinaryTree

#include <iostream>
using namespace std;

typedef struct _BinaryTree{
    char ch;
    _BinaryTree *pLeft;
    _BinaryTree *pRight;
}BTreeNode;

BTreeNode *g_pRoot = NULL;


//create 先序动态创建二叉树
void CreateBitnaryTree(BTreeNode **pNode)
{
    char ch;
    cin>>ch;
    if(ch == '#')
    {
        return ;
    }

    if(NULL == *pNode)
    {
        *pNode = new BTreeNode;
        (*pNode)->pLeft = NULL;
        (*pNode)->pRight = NULL;
        (*pNode)->ch = ch;
        cout<<"输入'"<<ch<<"'左节点值:";
        CreateBitnaryTree(&(*pNode)->pLeft);
        cout<<"输入'"<<ch<<"'右节点值:";
        CreateBitnaryTree(&(*pNode)->pRight);
    }
}

void preorderTraversal(BTreeNode *pRoot)
{
   if(NULL != pRoot)
   {
       if(pRoot->ch != '#')
       cout<<pRoot->ch<<" ";
       preorderTraversal(pRoot->pLeft);
       preorderTraversal(pRoot->pRight);
   }
}

void inorderTravesal(BTreeNode *pRoot)
{
   if(NULL != pRoot)
   {
      inorderTravesal(pRoot->pLeft);
       if(pRoot->ch != '#')
           cout<<pRoot->ch<<" ";
       inorderTravesal(pRoot->pRight);
   }
}

void postorderTraversal(BTreeNode *pRoot)
{
   if(NULL != pRoot)
   {
      postorderTraversal(pRoot->pLeft);
      postorderTraversal(pRoot->pRight);
       if(pRoot->ch != '#')
           cout<<pRoot->ch<<" ";
   }
}




int main(int argc, const char * argv[]) {
    // insert code here...

    cout<<"输入第一个节点('#'代表空):"<<endl;
    CreateBitnaryTree(&g_pRoot);

    cout<<"先序遍历:";
    preorderTraversal(g_pRoot);
    cout<<endl;

    cout<<"中序遍历:";
    inorderTravesal(g_pRoot);
    cout<<endl;

    cout<<"后序遍历:";
    postorderTraversal(g_pRoot);
    cout<<endl;

    return 0;
}

最后

以上就是坚定睫毛为你收集整理的二叉树动态链式创建以及遍历的全部内容,希望文章能够帮你解决二叉树动态链式创建以及遍历所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部