Convert Sorted List to Binary Search Tree ---请叫我变形金刚(please call me a transformer)
来源:互联网 发布:cpu 编程 英语 编辑:程序博客网 时间:2024/06/10 12:34
题目大意
给定一个有序链表,将其转变为一颗高度平衡的平衡二叉树
解题思路
让我们先回顾一下平衡二叉树的定义,在二叉平衡树的基础上其左右子树的最大深度不大于1。既然给定的字符串是有序的,那我们从中点开始向左右依次构建,即使用递归一直重复:找中位数,构造左子树,构造右子树的过程,必然就能很理想地构建出一棵完全平衡二叉树。
总结
题目不难,思路也很清晰,注意写测试的时候,构造链表时别先将cur移动到下一个节点后再申请空间,这样的话就是是先移动到NULL然后再申请空间,而NULL是一个固定的地址,因此无法保证链表的连接性,但在函数里面用递归建立链表这样是可以的,原因就在这里
http://blog.csdn.net/zhang360896270/article/details/40484827。另外还要注意使用快慢指针时要一直判断是否当前为空,因为空指针是没有next域的,故会出错
代码
class Solution {public: ListNode *getMiddle(ListNode *head, ListNode *tail) { ListNode *f_cur = head; ListNode *l_cur = head; while (f_cur != tail){ f_cur = f_cur->next; if (f_cur == tail)break; f_cur = f_cur->next; if (f_cur == tail)break; l_cur = l_cur->next; } return l_cur; } void reModi(TreeNode *&cur, ListNode *left, ListNode *right) { if (left == right)return ; ListNode *mid = getMiddle(left, right); cur = new TreeNode(mid->val); reModi(cur->left, left, mid); reModi(cur->right, mid->next, right); } TreeNode *sortedListToBST(ListNode *head) { TreeNode *root = NULL; reModi(root, head, NULL); return root; }};
0 0
- Convert Sorted List to Binary Search Tree ---请叫我变形金刚(please call me a transformer)
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- convert sorted list to binary search tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- (五) Android中WebView跟JavaScript中的交互
- error LNK2001: unresolved external symbol "void __stdcall _com_issue_error (long)"
- coach outlet usa-513100
- IOS学习--Foundation--NSArray的使用
- 依次输出链表中的各个结点的递归算法
- Convert Sorted List to Binary Search Tree ---请叫我变形金刚(please call me a transformer)
- error LNK2005: _DllMain@12 already defined in xxx.OBJ
- IOS学习--Foundation--计算文件中得代码行数(小练习)
- easyui 月历
- poj3636
- mfc中如何取消组合框的排序
- 黑马培训IOS学习--Foundation---NSSet的使用
- asio学习笔记3
- hibernate注解之实体属性OneToOne 单双向关联(三)