zoukankan      html  css  js  c++  java
  • [leetcode]109. Convert Sorted List to Binary Search Tree链表构建二叉搜索树

    二叉树的各种遍历方式都是可以建立二叉树的,例如中序遍历,就是在第一步建立左子树,中间第二步建立新的节点,第三步构建右子树

    此题利用二叉搜索树的中序遍历是递增序列的特点,而链表正好就是递增序列,从左子树开始递归利用链表的数据

    控制平衡是用的递归层数,用left和right来控制

    /*
        各序遍历也可以建立树
        利用二叉搜索树的特点,用中序遍历建立二叉树
         */
        //要递归listnode,所以要用全局变量
        ListNode node;
        public TreeNode sortedListToBST(ListNode head) {
            node = head;
            //首先计算listnode的长度,用来取中间节点
            int size = 0;
            while (head!=null)
            {
                head = head.next;
                size++;
            }
            return builder(0,size-1);
        }
        public TreeNode builder(int left,int right)
        {
            if (left>right)
                return null;
            int mid = (right+left)/2;
            //建造左子树
            TreeNode lt = builder(left,mid-1);
            //当前根节点
            TreeNode root = new TreeNode(node.val);
            root.left = lt;
            //节点后移
            node = node.next;
            //构造右子树
            TreeNode rt = builder(mid+1,right);
            root.right = rt;
            return root;
        }
  • 相关阅读:
    Hyper-V自定义专用网络网段
    mongodb导入,导出实例
    kafka介绍二 快速开始
    常用代理IP服务商
    kafka介绍一
    链接汇总
    心态,决定你的人生
    hibernate入门(三)hibernate的三种状态解析
    hibernate入门(二)一级缓存和三种状态解析
    css动画之颤动的动画
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8340500.html
Copyright © 2011-2022 走看看