- 博客(6)
- 资源 (2)
- 收藏
- 关注
原创 求二叉树中结点值的和为指定整数的所有路径
题目输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。class Solution { public: vector<vector<int> >all; vector<int> temp; void dfsFind(TreeNode *root, int sum){ tem
2017-05-25 14:18:10 615
原创 满二叉树中任意两个结点的公共祖先
题目有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b,求出a和b点的最近公共祖先的编号。分析满二叉树的子节点与父节点之间的关系为root = child / 2 ,如果a != b,就让其中的较大数除以2, 如此循环直到a == b, 即是原来两个数的最近公共祖先。class LCA { public: int getLCA(int a,
2017-05-25 11:02:50 558
原创 输出二叉树中中序遍历中给定结点的下一个结点
题目输出二叉树中指定结点的下一个结点(即中序遍历的后继)。给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值,若不存在后继返回-1。分析中序遍历的非递归写法。第一步:中序遍历的非递归 BTNode* p = root; stack<BTNode*> s; while (!s.empty() || p) {
2017-05-25 10:44:53 712
原创 输出二叉树某一层的所有结点
题目:给定二叉树的根结点指针以及链表上结点的深度,返回一个链表,代表该深度上从左往右所有结点的值。方法递归遍历,刚开始为深度为dep,每往下递归一层,则深度减1,当深度为1的时候,便输出那个元素,如果先递归左子树,那么则实现从左到右打印,如果先递归右子树,则实现从右往左打印。struct TreeNode { int val; struct TreeNode *left; s
2017-05-24 17:24:42 3771
原创 二叉查找树的判断
题目:给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树。方法一二叉查找树中序遍历后的结果是有序的,根据这个结果,可以中序遍历二叉树,并把遍历结果存放在一个数组里面,然后判断这个数组大小是否是有序数组,如果是有序数组,则是二叉查找树,否则就不是。时间复杂度是O(N),空间复杂度O(N)。class Checker { public: vector<i
2017-05-24 17:19:56 571
原创 1.4 逆序一个栈
题目:一个栈依次压入12345,实现栈中元素逆序解法一:开辟了一个新的栈作为辅助栈,将原栈中的元素依次弹出并压入到辅助栈中,最后返回辅助栈。//逆序一个栈 stack<int> reverseStack(stack<int> stackData){ //辅助栈 stack<int> temp; while(!stackData.empty()){ t
2017-05-04 19:03:31 419
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人