zoukankan      html  css  js  c++  java
  • 剑指offer第26题

    /**
     * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
     * 要求不能创建任何新的结点,只能调整树中结点指针的指向。
     * <p>
     * 思路
     * 方式一
     * 1、先按中序遍历,把节点存入list
     * 2、再把list的节点连接成双向链表
     * <p>
     * 方式二
     * 中序遍历时直接指向
     */
    public class Solution26 {
    //    public TreeNode Convert(TreeNode pRootOfTree) {
    //        if (pRootOfTree == null) {
    //            return null;
    //        }
    //        ArrayList<TreeNode> arrayList = new ArrayList<>();
    //        ArrayList<TreeNode> list = inOrder(pRootOfTree, arrayList);
    //        return convert(list);
    //    }
    //
    //    private ArrayList<TreeNode> inOrder(TreeNode pRootOfTree, ArrayList<TreeNode> arrayList) {
    //        if (pRootOfTree.left != null){
    //            inOrder(pRootOfTree.left,arrayList);
    //        }
    //        arrayList.add(pRootOfTree);
    //        if (pRootOfTree.right != null){
    //            inOrder(pRootOfTree.right,arrayList);
    //        }
    //        return arrayList;
    //    }
    //
    //    private TreeNode convert(ArrayList<TreeNode> list) {
    //        TreeNode head = new TreeNode(0);
    //        TreeNode curr = head;
    //        for (int i = 0; i < list.size(); i++) {
    //            curr.right = list.get(i).left;
    //            list.get(i+1).left = list.get(i).right;
    //            curr = curr.right;
    //        }
    //        return head.right;
    //    }
    
        TreeNode tail;
        TreeNode head;
    
        public TreeNode Convert(TreeNode pRootOfTree) {
            if (pRootOfTree == null) {
                return pRootOfTree;
            }
            convert(pRootOfTree);
            return head;
        }
    
        public void convert(TreeNode root) {
            if (root == null) {
                return;
            }
            convert(root.left);
            if (head == null) {
                head = root;
                tail = root;
            } else {
                tail.right = root;
                root.left = tail;
                tail = root;
            }
            convert(root.right);
        }
    }
  • 相关阅读:
    CKA-Kubernets(K8s) (一)
    CKA-docker 容器的管理
    CKA-docker 镜像的管理
    CKA-docker 基础
    开年自省系列—— 阅读完一本书《财务之路系列》 读书笔记
    Sublime开启VIM模式
    JavaScript 踩坑开始(ing...)
    代码思考题玩玩
    P2016 战略游戏-树形DP
    皇宫看守-树形DP
  • 原文地址:https://www.cnblogs.com/Adam-Ye/p/13578970.html
Copyright © 2011-2022 走看看