前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当Kotlin遇见数据结构丨实现链式存储的二叉树中删除子树(直接删除篇)

当Kotlin遇见数据结构丨实现链式存储的二叉树中删除子树(直接删除篇)

作者头像
码脑
发布2019-04-11 15:00:03
5520
发布2019-04-11 15:00:03
举报
文章被收录于专栏:大前端

本例中树结构、节点权如下图所示


删除节点、子树代码

本例实现逻辑为直接删除节点及其子节点,未处理存在有左右子节点并需移动逻辑,故将标题命名为为直接删除篇

  • 存在左节点或者右节点,删除后需要对子节点移动将在善后删除篇中更新
  • 同时存在左右子节点,不能简单的删除,但是可以通过和后继节点交换后转换为前两种情况将在善后删除篇中更新
代码语言:javascript
复制
    /**
     * 删除节点、子树
     */
    fun deleteNode(index: Int) {
        var indexNode:TreeNode = this

        // 比较左子节点
        if(indexNode?.leftNode?.value == index){
            indexNode?.leftNode = null
            return
        }

        // 比较右子节点
        if(indexNode?.rightNode?.value == index){
            indexNode?.rightNode = null
            return
        }

        // 递归检查并删除左子节点
        leftNode?.deleteNode(index)

        // 递归检查并删除右子节点
        leftNode?.deleteNode(index)

    }

运行结果


直接删除逻辑篇到此完结,善后删除逻辑篇完善中!欢迎关注本人继续跟进技术干货的更新!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本例中树结构、节点权如下图所示
  • 删除节点、子树代码
  • 运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档