tree
leagalhigh
never give up!
展开
-
leetcode-101-Symmetric Tree
这是一个简单的递归题,当然,也可以通过栈实现递归的效果。思路: 我想说的是它的递归有点不同于常见的递归,常见的递归是每次传入一个节点,要么先序遍历,要么中序遍历,要么后续遍历,但这道题应该传入两个节点,因为它是要对称嘛,必须站在宏观的角度去看,遍历完所有节点才可以返回最终结果,到底是不是对称的。下面是我的C++代码跟一个递归代码:/** * Definition for a binary t原创 2017-04-12 09:44:53 · 450 阅读 · 0 评论 -
leetcode-108. Convert Sorted Array to Binary Search Tree
思路:因为nums是有序对,所以每次将一个区间的中间位置的数插进去得到的二叉树是BST。bug free。C++ 代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNod原创 2017-04-22 16:46:18 · 211 阅读 · 0 评论 -
leetcode-315. Count of Smaller Numbers After Self
这道题好难,考察树状数组。 思路:首先,先判断nums是否为0数组,若是做出相应选择;然后将nums转化为从1开始的数组,即整体平移,使其最小值为1;然后构造树状数组tree,tree【i】的含义要搞清楚:从tree【i】加到i去尾到0的tree【0】为,当前数字num位置后面的, 比num小的数的个数之和。然后每移动一次要更新一次tree。C++ 代码:class Solution {publ原创 2017-05-06 20:41:59 · 236 阅读 · 0 评论 -
树状数组-线段树模板题(leetcode-307)
考察点:树状数组,线段树; 树状数组就是声明一个新的数组来表述树状数组,然后根据树的二进制特征进行update和getSum。线段树是根据数组生成一棵树。 下面是经典的树状数组代码:class NumArray {public: vector<int> tree; vector<int> Nums; int len; NumArray(vector<int> n原创 2017-05-16 10:25:55 · 879 阅读 · 0 评论 -
leetcode-530. Minimum Absolute Difference in BST
考察点:平衡二叉树性质,遍历特点; 思路:BST中序遍历是有序的; C++ 代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),原创 2017-05-19 09:38:00 · 265 阅读 · 0 评论 -
leetcode-623. Add One Row to Tree
考察点:递归, 二叉树; 思路:递归思想;很重要的是help函数的处理,它要返回指针,而且它的功能是返回最终的root,这个root是满足条件的root。当然,help函数里还要递归,确定好为NULL的条件和depth==curdepth这两个结束条件就ok了。 C++代码:/** * Definition for a binary tree node. * struct TreeNode原创 2017-06-18 12:24:48 · 382 阅读 · 0 评论 -
leetcode-450.delete a node in a BST
考察点:二叉树 思路:递归删除,有两种删法;C++ 代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),原创 2017-09-27 14:30:12 · 132 阅读 · 0 评论 -
leetcode-648. Replace Words
考察点:trie树,指针; 思路:根据dict生成trie树,判断是否是_is_end时需要留意。C++代码:class Solution {public: struct TrieNode{ bool _is_end; TrieNode * next[26]; TrieNode(){ _is_end = false;原创 2017-09-03 10:22:49 · 284 阅读 · 0 评论 -
leetcode- Add to List 669. Trim a Binary Search Tree
考察点:二叉树, 递归; 思路:如果root的val比L还要小,就应该trim掉root左边的枝,所以返回对root右边的递归;如果root的val比R还要大,返回对root左边的递归;如果root的val在[L, R]中间, 就分别对root的left和right赋值。这个思想很巧妙,不好想。 C++代码:/** * Definition for a binary tree node. *原创 2017-10-13 15:14:18 · 244 阅读 · 0 评论