会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
牧马人夏峥
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
33
34
35
36
37
38
39
40
41
···
62
下一页
2016年6月17日
Leetcode 之Convert Sorted Array to Binary Search Tree(54)
摘要: 思路很简单,用二分法,每次选中间的点作为根结点,用左、右结点递归。 TreeNode* sortedArrayToBST(vector<int> &num) { return sortedArrayToBST(num.begin(), num.end()); } template<typename
阅读全文
posted @ 2016-06-17 16:04 牧马人夏峥
阅读(120)
评论(0)
推荐(0)
2016年6月16日
Leetcode 之Validate Binary Search Tree(53)
摘要: 判断是否是有效的二叉搜索树,即左子树的值小于根结点,右子树的值大于根结点。可以采用递归的方式来完成,递归时如何 传递有效的参数与根结点进行比较,是此题的难点。 1 bool isValidBST(TreeNode *root) 2 { 3 isValidBST(root, INT_MIN, INT_
阅读全文
posted @ 2016-06-16 11:30 牧马人夏峥
阅读(132)
评论(0)
推荐(0)
2016年6月7日
Leetcode 之Construct Binary Tree(52)
摘要: 根据先序和中序构造二叉树、根据中序和后序构造二叉树,基础题,采用递归的方式解决,两题的方法类似。需要注意的是迭代器的用法。 //先序和中序 TreeNode *buildTree(vector<int>& preorder, vector<int>& inorder) { return buildT
阅读全文
posted @ 2016-06-07 16:35 牧马人夏峥
阅读(153)
评论(0)
推荐(0)
2016年6月1日
Leetcode 之Populating Next Right Pointers in Each Node II(51)
摘要: void connect(TreeLinkNode *root) { while (root) { //每一层循环时重新初始化 TreeLinkNode *prev = nullptr; TreeLinkNode *next = nullptr; //对于每一层 for (; root; root
阅读全文
posted @ 2016-06-01 16:04 牧马人夏峥
阅读(126)
评论(0)
推荐(0)
Leetcode 之Flatten Binary Tree to Linked List(50)
摘要: 将左子树接到右子树之前,递归解决 void flatten(TreeNode *root) { if (root == nullptr)return; flatten(root->left); flatten(root->right); //如果没有左子树,直接返回即可 if (root->left
阅读全文
posted @ 2016-06-01 15:13 牧马人夏峥
阅读(138)
评论(0)
推荐(0)
Leetcode 之Balanced Binary Tree(49)
摘要: 用递归的方式来做,左右两棵子树的高度差不超过1。分成两部分,一部分递归得到树的高度,一部分递归检查左右子树是否是平衡二叉树。 int getHeight(TreeNode *root) { if (root == nullptr)return 0; return max(getHeight(root
阅读全文
posted @ 2016-06-01 14:38 牧马人夏峥
阅读(161)
评论(0)
推荐(0)
Leetcode 之Same Tree(48)
摘要: 用递归比较简单,这里用迭代的方式实现。注意什么时候返回true,什么时候返回false。 bool isSameTree(TreeNode *p, TreeNode *q) { stack<TreeNode *> s; s.push(p); s.push(q); while (!s.empty())
阅读全文
posted @ 2016-06-01 14:12 牧马人夏峥
阅读(126)
评论(0)
推荐(0)
2016年5月30日
Leetcode 之Binary Tree Postorder Traversal(47)
摘要: 中序遍历二叉搜索树,得到的是一个有序的结果,找出其中逆序的地方就可以了。如果逆序的地方相邻,只需把逆序的相换即可;如果不相邻,则需要找到第二个逆序对的 第二个元素再做交换。 定义两个指针p和q来指定需要交换的元素,指针pre记录当前结点的前驱结点,用来判断是否逆序。 void recoverTree
阅读全文
posted @ 2016-05-30 16:29 牧马人夏峥
阅读(101)
评论(0)
推荐(0)
Leetcode 之Binary Tree Postorder Traversal(46)
摘要: 采用广度优先遍历,一个变量记录层数,一个变量记录方向. void traverse(TreeNode *root, vector<vector<int>> result, int level, bool left_to_right) { if (!root)return; //如果进入下一层了,则r
阅读全文
posted @ 2016-05-30 14:57 牧马人夏峥
阅读(150)
评论(0)
推荐(0)
2016年5月28日
Leetcode 之Binary Tree Postorder Traversal(45)
摘要: 层序遍历,使用队列将每层压入,定义两个队列来区分不同的层。 vector<vector<int>> levelorderTraversal(TreeNode *root) { vector<vector<int>> result; vector<int>tmp; //通过两个queue来区分不同的层
阅读全文
posted @ 2016-05-28 16:27 牧马人夏峥
阅读(120)
评论(0)
推荐(0)
上一页
1
···
33
34
35
36
37
38
39
40
41
···
62
下一页
公告