美文网首页IT圈内那点事儿程序员
二叉树(1)- 创建二叉树

二叉树(1)- 创建二叉树

作者: 比特蛙 | 来源:发表于2016-10-27 16:29 被阅读645次

    有任何问题,欢迎交流!微博@HelloWorld-_-

    定义二叉树节点的结构体


    typedef struct TreeNode
    {
            char value;       //节点值
            TreeNode* lchild; //左子树
            TreeNode* rchild; //右子树
    }TreeNode;
    ```
    #创建二叉树
    *** 
    ```
    /*
    采用递归方式创建二叉树,通过*表示没有左子树或右子树
    先创建左子树,再创建右子树
    */
    int generate(TreeNode* &t)
    {
            char value;
            cin >> value;
            if(value != '*')
            {
                    if(t)
                    {
                            t->value = value;
                    }
                    else
                    {
                            t = new TreeNode;
                            t->value = value;
                            generate(t->lchild);//创建左子树
                            generate(t->rchild);//创建右子树
                    }
            }
            else // value==* 表示NULL
            {
                    t = NULL;
            }
            return 0;
    }
    ```
    #二叉树示例
    ***
    **输入**     ```  ABDH***E*I**CF*J**GK**L** ```
    **生成的二叉树如下图**
    
    ![二叉树示例.png](http:https://img.haomeiwen.com/i3333768/48f4c1ef2bc6ceef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ```
    //访问二叉树节点,将value打印
    int visit(TreeNode* pt)
    {
            if(pt)
            {
                    if(pt->value != '*')
                    {
                            cout << pt->value;
                    }
            }
            return 0;
    }
    
    //二叉树先序遍历算法,在本文中仅用于展示二叉树结果,不解释其原理
    int preOrder(TreeNode* t)
    {
            if(t)
            {
                    visit(t);
                    preOrder(t->lchild);
                    preOrder(t->rchild);
            }
            return 0;
    }
    
    int main()
    {
            TreeNode* pt = NULL;
            generate(pt);//生成二叉树
            preOrder(pt);//先序遍历二叉树,用于展示二叉树的效果
            return 0;
    }
    ```
    **运行结果**
    
    ![运行结果.png](http:https://img.haomeiwen.com/i3333768/eb911ed09c2c4742.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    相关文章

      网友评论

        本文标题:二叉树(1)- 创建二叉树

        本文链接:https://www.haomeiwen.com/subject/fajluttx.html