递归建立二叉树

Posted xgboost

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归建立二叉树相关的知识,希望对你有一定的参考价值。

转载:递归建立二叉树

假设二叉树为:

                                        a

                              b                 c

                                   d                 e

       

         因为程序中要知道叶子结点(终点),所以要将上面的二叉树变成扩展二叉树 (把叶子结点的孩子补成#, 用作标记),  扩展后就变成了:         

                                       a

                            b                    c

                       #        d          #       e

                              #    #             #    #

 

          那么,在输入的时候,需要输入: ab#d##C#e##      (注意,输入后,按enter键即可)   ,程序如下:

#include<iostream>
using namespace std;

typedef struct node
{
    struct node *leftChild;
    struct node *rightChild;
    char data;
}BiTreeNode, *BiTree;

void createBiTree(BiTree &T)
{
    char c;
    cin >> c;
    if(# == c)
        T = NULL;
    else
    {
        T = new BiTreeNode;
        T->data = c;
        createBiTree(T->leftChild);
        createBiTree(T->rightChild);
    }
}

int main()
{
    BiTree T;
    createBiTree(T);

    return 0;
}

经遍历验证可知,上面的程序是正确的, 至于如何遍历,以后的博文会陆续给出相应的程序

以上是关于递归建立二叉树的主要内容,如果未能解决你的问题,请参考以下文章

使用递归法建立二叉树

二叉树的前中后序递归和非递归遍历操作代码

关于数据结构中递归建立二叉树时出现了问题

二叉树的非递归遍历

建立二叉树,层序、先序遍历

题目 6 建立二叉树,层序、先序遍历(用非递归的方法)