ConvertSortedListToBinarySearchTree
来源:互联网 发布:dnf端口辅助怎么稳定 编辑:程序博客网 时间:2024/06/03 17:51
1.问题描述
根据给定的有序单链表,创建一个平衡二叉查找树(每个节点node的左子树node.left上的节点值都小于node.val,每个节点node的右子树node.right上的节点值都大于node.val)
2.解题思路
寻找head(开始节点),tail(结束节点)的中位节点,即采用fast指针和slow指针完成,其中fast指针遍历的速度是slow指针的两倍,这样每次遍历完slow指针所表示的节点即为此时的根节点
3.程序源码
public TreeNode sortedListToBST(ListNode head) {
return toBST(head, null);
}
private TreeNode toBST(ListNode head, ListNode tail) {
if (head == tail)
return null;
// 申请两个指针,fast移动速度是low的两倍
ListNode fast = head;
ListNode slow = head;
while (fast != tail && fast.next != tail) {
fast = fast.next.next;
slow = slow.next;
}
TreeNode root = new TreeNode(slow.val);
root.left = toBST(head, slow);
root.right = toBST(slow.next, tail);
return root;
}
根据给定的有序单链表,创建一个平衡二叉查找树(每个节点node的左子树node.left上的节点值都小于node.val,每个节点node的右子树node.right上的节点值都大于node.val)
2.解题思路
寻找head(开始节点),tail(结束节点)的中位节点,即采用fast指针和slow指针完成,其中fast指针遍历的速度是slow指针的两倍,这样每次遍历完slow指针所表示的节点即为此时的根节点
3.程序源码
public TreeNode sortedListToBST(ListNode head) {
return toBST(head, null);
}
private TreeNode toBST(ListNode head, ListNode tail) {
if (head == tail)
return null;
// 申请两个指针,fast移动速度是low的两倍
ListNode fast = head;
ListNode slow = head;
while (fast != tail && fast.next != tail) {
fast = fast.next.next;
slow = slow.next;
}
TreeNode root = new TreeNode(slow.val);
root.left = toBST(head, slow);
root.right = toBST(slow.next, tail);
return root;
}
阅读全文
0 0
- ConvertSortedListToBinarySearchTree
- leetcode--ConvertSortedListtoBinarySearchTree
- 试试Linux下的ip命令,ifconfig已经过时了
- 控制反转(IOC)和依赖注入(DI)的区别
- 欢迎使用CSDN-markdown编辑器
- jQuery-第一个简单json传值测试
- mongodb导入csv报错 Failed: line 1, column 1428: bare " in non-quoted-field
- ConvertSortedListToBinarySearchTree
- win10+qt+vs2013实现连续拍照功能并存储到文件夹中
- 【TensorFlow】计算图graph的使用学习笔记(二)
- 光荣之路:产品测试规范(九)
- Android Glide 加载图片时会缩放一下
- Golang jsn格式文件解析
- ecognition 分类轻松上手
- 爆客系统源码 ipad协议 成品网站限量出全网最低速来咨询
- Ajax相关知识