摘要:
题目: 解法: 基本思路是每次访问到叶子节点的时候,将已有的路径进行输出,可以用一个栈来存储,每次回溯的时候,节点出栈,然后访问至叶子节点时,对栈结构进行遍历即可,这里采用vector进行操作,其优势在于,可以直接采用下标进行访问! 1 /** 2 * Definition for a binary 阅读全文
posted @ 2020-05-02 16:06
梦醒潇湘
阅读(240)
评论(0)
推荐(0)
摘要:
题目: 解答: (递归) O(n) 当我们用递归去做这个题时不要被题目误导,应该要明确一点:这个函数的功能有三个:给定两个节点 p和 q (1)如果 p 和 q 都存在,则返回它们的公共祖先; (2)如果只存在一个,则返回存在的一个; (3)如果 p 和 q 都不存在,则返回NULL 本题说给定的两 阅读全文
posted @ 2020-05-02 15:48
梦醒潇湘
阅读(143)
评论(0)
推荐(0)
摘要:
题目: 解决: 方法一:递归 思路: 节点 p,q 的最近公共祖先(LCA)是距离这两个节点最近的公共祖先节点。在这里 最近 考虑的是节点的深度。下面这张图能帮助你更好的理解 最近 这个词的含义。 笔记:p 和 q其中的一个在 LCA 节点的左子树上,另一个在 LCA 节点的右子树上。 也有可能是下 阅读全文
posted @ 2020-05-02 15:42
梦醒潇湘
阅读(162)
评论(0)
推荐(0)
摘要:
题目: 解答: 通过构造 BST 的中序遍历序列,则第 k-1 个元素就是第 k 小的元素。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * 阅读全文
posted @ 2020-05-02 15:32
梦醒潇湘
阅读(186)
评论(0)
推荐(0)
摘要:
题目: 解答: 反转一颗空树结果还是一颗空树。对于一颗根为 rr,左子树为 \mbox{right}, 右子树为 \mbox{left} 的树来说,它的反转树是一颗根为 rr,左子树为{right} 的反转树,右子树为 {left} 的反转树的树。 1 /** 2 * Definition for 阅读全文
posted @ 2020-05-02 15:26
梦醒潇湘
阅读(184)
评论(0)
推荐(0)
摘要:
题目: 解答: 最简单的解决方法就是用递归一个一个的计算节点。 时间复杂度为O(N); 空间复杂度为O(d)=O(logN); 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * Tr 阅读全文
posted @ 2020-05-02 15:22
梦醒潇湘
阅读(160)
评论(0)
推荐(0)
摘要:
题目: 解答: 利用广度优先搜索进行层次遍历,记录下每层的最后一个元素。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode 阅读全文
posted @ 2020-05-02 15:18
梦醒潇湘
阅读(220)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 15:08
梦醒潇湘
阅读(167)
评论(0)
推荐(0)
摘要:
题目: 解法: 方法一:递归实现 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode 阅读全文
posted @ 2020-05-02 15:03
梦醒潇湘
阅读(148)
评论(0)
推荐(0)
摘要:
题目: 解法:方法一:递归方法 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode( 阅读全文
posted @ 2020-05-02 14:30
梦醒潇湘
阅读(157)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 13:16
梦醒潇湘
阅读(140)
评论(0)
推荐(0)
摘要:
题目: 解答: /* // Definition for a Node. class Node { public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next 阅读全文
posted @ 2020-05-02 13:11
梦醒潇湘
阅读(153)
评论(0)
推荐(0)
摘要:
题目: 解法: 1 /* 2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 Node* left; 7 Node* right; 8 Node* next; 9 10 Node() : val(0), left(NUL 阅读全文
posted @ 2020-05-02 13:07
梦醒潇湘
阅读(135)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val( 阅读全文
posted @ 2020-05-02 13:04
梦醒潇湘
阅读(157)
评论(0)
推荐(0)
摘要:
题目: 解法: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 13:01
梦醒潇湘
阅读(153)
评论(0)
推荐(0)
摘要:
题目: 解答: 声明一个变量记录已经经过的节点的值之和,每经过一个节点就加上这个节点的值,在叶子节点判断变量值是否为目标值。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * Tre 阅读全文
posted @ 2020-05-02 12:59
梦醒潇湘
阅读(129)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 12:52
梦醒潇湘
阅读(158)
评论(0)
推荐(0)
摘要:
题目: 解答: 平衡二叉树要求左子树和右子树的高度相差为1,且左右子树都是平衡二叉树,显然要计算二叉树的高度的函数。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNod 阅读全文
posted @ 2020-05-02 12:46
梦醒潇湘
阅读(1194)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 12:40
梦醒潇湘
阅读(257)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 12:35
梦醒潇湘
阅读(487)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-02 12:32
梦醒潇湘
阅读(167)
评论(0)
推荐(0)
摘要:
题目: 解答: 递归求解。 基本情况:先序与中序数组长度小于1时,返回NULL。 递归步骤:首先去欸的那个preorder的第一个元素一定是该树的root,再在inorder中找到该元素,标记为index,index左部分为左子树的中序,右部分为右子树的中序;随后,通过左右子树中序的长度(可能为0) 阅读全文
posted @ 2020-05-02 12:30
梦醒潇湘
阅读(152)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:递归的方法 可以很容易用递归解决这个问题,为什么呢?因为一个节点的左孩子和右孩子是该节点的子树。首先,计算左子树的最大高数,然后计算右子树的高度。 因此,当前节点的最大高度就是max(左子树的最大高度, 右子树的最大高度)+1。 基于以上事实,当前节点为空时,返回0;NULL 阅读全文
posted @ 2020-05-02 12:20
梦醒潇湘
阅读(169)
评论(0)
推荐(0)
摘要:
题目: 解答: 这个题目和上一题目没有太大的区别,设置一个标志位,以决定从左到右还是从右到左。 1 //小集合和大集合均OK 2 class Solution { 3 public: 4 vector<vector<int> > zigzagLevelOrder(TreeNode *root) 5 阅读全文
posted @ 2020-05-02 12:00
梦醒潇湘
阅读(202)
评论(0)
推荐(0)
摘要:
题目: 解法: 方法一: 1 void printLevel(BinaryTree *p, int level) 2 { 3 if (!p) 4 { 5 return; 6 } 7 if (level == 1) 8 { 9 cout << p->data << " "; 10 } 11 else 阅读全文
posted @ 2020-05-02 11:55
梦醒潇湘
阅读(135)
评论(0)
推荐(0)
摘要:
题目: 解法: 方法一:递归的方法 1 //小集合和大集合均OK 2 public class Solution 3 { 4 public boolean isSymmetric(TreeNode root) 5 { 6 if (root == null) 7 { 8 return true; 9 阅读全文
posted @ 2020-05-02 11:36
梦醒潇湘
阅读(174)
评论(0)
推荐(0)
摘要:
题目: 解答: 用树的遍历来检查。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNod 阅读全文
posted @ 2020-05-02 11:25
梦醒潇湘
阅读(149)
评论(0)
推荐(0)
摘要:
题目: 解法: 题目说一棵二叉搜索树中有两个节点位置错了,要在常数空间将其改正。想到的算法就是中序遍历二叉树... Space O(n)的方法就是自己用stack来模拟inorder traverse,然后将输出的结果存在一个vector里面,然后遍历vector找到冲突的对。 Space cons 阅读全文
posted @ 2020-05-02 11:22
梦醒潇湘
阅读(175)
评论(0)
推荐(0)
摘要:
题目: 解法: 方法一: 下面是brute force code,虽然不是很高效,但是可以工作。 1 bool isSubTreeLessThan(BinaryTree *p, int val) 2 { 3 if (!p) 4 { 5 return true; 6 } 7 return (p->da 阅读全文
posted @ 2020-05-02 11:08
梦醒潇湘
阅读(142)
评论(0)
推荐(0)
摘要:
题目: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例: 输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]] 解释:以上的输出对应以下 5 种不同结构 阅读全文
posted @ 2020-05-02 10:49
梦醒潇湘
阅读(145)
评论(0)
推荐(0)
摘要:
题目: 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 解法: 方法一: 用动态规 阅读全文
posted @ 2020-05-02 10:34
梦醒潇湘
阅读(169)
评论(0)
推荐(0)
摘要:
题目: 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解法: 方法一:递归实现 1 /** 2 * Definition for a binary tree node. 3 阅读全文
posted @ 2020-05-02 10:20
梦醒潇湘
阅读(174)
评论(0)
推荐(0)

浙公网安备 33010602011771号