算法

构建二叉树

2020-10-30  本文已影响0人  小鱼嘻嘻

问题1

根据前序和后序构建二叉树

原理

代码


注意事项

问题2

根据前序和中序构建二叉树

原理

代码


注意事项

问题3

根据中序和后序构建二叉树

原理

代码


注意事项

问题4

根据二叉排序树的后序构建二叉树

原理

代码


注意事项

问题5

将有序数组转换为二叉搜索树

原理

代码

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
       if(nums==null||nums.length<=0){
           return null;
       }
       TreeNode root = new TreeNode(nums[nums.length/2]);
       root.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,nums.length/2));
       root.right = sortedArrayToBST(Arrays.copyOfRange(nums,nums.length/2+1,nums.length));
       return root;
    }
}

注意事项

问题6

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

原理

代码

class Solution {
    public TreeNode sortedListToBST(ListNode head) {
        if(head==null){
            return null;
        }
       if(head.next==null){
            return  new TreeNode(head.val,null,null);
        }
        ListNode fast = head;
        ListNode slow = head;
        ListNode pre = null;
        while(fast!=null&&fast.next!=null){
            pre = slow;
            slow = slow.next;
            fast = fast.next.next;
        }
        pre.next = null;
        TreeNode left =  sortedListToBST(head);
        TreeNode right =  sortedListToBST(slow.next);
        TreeNode newRoot = new TreeNode(slow.val,left,right);
        return newRoot;
    }

   
}

注意事项

上一篇下一篇

猜你喜欢

热点阅读