前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指offer_8_二叉树转双链表

剑指offer_8_二叉树转双链表

作者头像
用户6055494
发布2019-09-26 15:38:04
5540
发布2019-09-26 15:38:04
举报
文章被收录于专栏:AVAJAVAJAVAJ
题目:二叉树转链表

描述:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的节点,只能调整树中节点指针的指向。

思路:根据二叉树的中序遍历为有序的特性,我们只需要在其中序遍历的递归函数里改变指向就可以啦。

public class Reverse {
    TreeNode pre = null;
    TreeNode head = null;
    
    public TreeNode change(TreeNode root) {
        deal(root);
        return head;
    }
    
    public void deal(TreeNode node) {
        deal(node.left);
        // 当前节点的左指针指向上一个节点
        node.left = pre;
        // 上一个节点的右指针指向下一个节点
        if (pre != null) {
            pre.right = node;
        }
        // 将当前节点置为"上一个节点"给后续节点使用
        pre = node;
        if (head == null) {
            head = node;
        }
        // 递归右节点
        deal(node.right);
    }
}

总结:利用好二叉树各种遍历的特性,完美解决。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员面试鸭 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档