树——二叉树结点的插入

本文探讨了在二叉树中插入节点时需要考虑的问题,包括能否在任意节点处插入、是否需要指定插入位置等。文章介绍了枚举类型BTNodePos用于表示插入位置,并详细阐述了不同插入方式的实现,包括插入新节点和插入数据元素的方法。同时,强调了插入操作中的关键点,如处理父节点指针、创建和释放节点空间。
摘要由CSDN通过智能技术生成

1,需要考虑的问题:

       1,是否能够在二叉树任意结点处插入子结点?

              1,不能,二叉树每个结点的成员是相对固定的,只有两个指向左右后继结点的指针成员;

       2,是否需要指定新数据元素(新结点)的插入位置?

              1,需要;

              2,插入新结点(或数据元素)作为叶结点孩子,具体插入左边还是右边呢?

             

2,二叉树结点的位置枚举类型:

       1,enum BTNodePos

            {

               ANY,  // 不介意,左右孩子都可以

               LEFT,  // 插入新结点只能作为左孩子;

               RIGHT  // 插入新结点只能作为右孩子;

            };

 

3,插入方式:

       1,插入新结点:

              1,bool insert(TreeNode<T>* node);

                     1,只要新结点能插入就可以,不管左边还是右边的位置;

                     2,左右没有位置,返回 false;

              2,bool insert(TreeNode<T>* node, BTNodePos pos);

                     1,按照 pos 要求插入位置,要求位置没有位置,则返回 false;

                     2,通用树结构插入操作只会返回 true;

       2,插入数据元素:

              1,bool insert(const T& value, TreeNode<T>* parent);

                     1,只要有位置就插入;

              2,bool insert(const T& value, TreeNode<T>* parent, BTNodePos pos);

                     1,按 pos 要求插入;

                    

4,新结点的插入:

 

       1,查找;

       2,插入;

             

5,指定位置的结点插入:

     

      

6,插入新结点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值