![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
阿飞1120
这个作者很懒,什么都没留下…
展开
-
二叉树翻转
二叉树翻转递归思想非递归思想:翻转一棵二叉树。递归思想从根节点起,一次翻转左右孩子的值,然后再对左右字数进行递归class Solution {public: TreeNode* invertTree(TreeNode* root) { if (nullptr == root || (root->right == nullptr && ro...原创 2019-09-22 12:08:13 · 209 阅读 · 0 评论 -
通过有序数组 构建二次平衡搜索树
有序数组构建二次平衡搜索树递归思想+二分查找递归思想+二分查找从根节点起,其val为数组二分查找中间值对左右孩子再进行同样的操作class Solution {public: TreeNode* to_bst(vector<int>& nums, int left, int right) { if (left > right) ...原创 2019-09-22 12:12:03 · 154 阅读 · 0 评论 -
二叉树的 最大|最小 深度
二叉树的 最大|最小 深度二叉树的最大深度二叉树的最小深度二叉树的最大深度采用递归的思想class Solution {public: int maxDepth(TreeNode* root) { if (root == NULL) { return 0; } int left_depth = ...原创 2019-09-22 12:18:48 · 203 阅读 · 0 评论 -
二叉树的三种遍历
二叉树的三种遍历中序遍历前序遍历后序遍历中序、前序、后序是指对根节点的访问顺序,孩子结点无论哪种遍历方式,都是先左后右!!!中序遍历左 中 右class Solution {public: int inorder(TreeNode* root) { if (root != NULL) { inorder(root-&...原创 2019-09-22 14:22:44 · 105 阅读 · 0 评论 -
二叉树的层次遍历
二叉树的层次遍历二叉树的层次遍历二叉树的层次遍历采用队列先进先出的特性step1:先把根节点push进去step2.1:如果队列不为空,当前队列的size即为这一层总共的Node数,即将队列前size个node放入同一层step2.2:在2.1步骤放入新Node的过程中,如果新Node有孩子,需要将其孩子push进队列中涉及到的api:队列定义:std::queue<T>...原创 2019-09-22 14:31:15 · 213 阅读 · 0 评论 -
判断是否为平衡二叉树
判断是否为平衡二叉树判断是否为平衡二叉树判断是否为平衡二叉树1、根据基础的树深度函数判断两个子树的深度差值小于22、采用递归思想,对左孩子、有孩子判断是否是平衡二叉树class Solution {public: int node_depth(TreeNode* node) { if (node == NULL) { ret...原创 2019-09-22 14:34:54 · 117 阅读 · 0 评论 -
二叉搜索树的最近公共祖先
二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先根据二茬搜索树的特性:如果两个结点val都比root结点val大,那它两都在右子树;如果两个结点val都比root结点val小,那它两都在左子树;否则root就是最近公共结点class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* r...原创 2019-09-22 14:43:41 · 243 阅读 · 0 评论 -
判断是否为镜像二叉
判断是否为镜像二叉树判断是否为镜像二叉树判断是否为镜像二叉树把树root,强行当做两颗树:root,root;判断这两棵树是否镜像条件1:这两棵树的根节点相等条件2:第1颗树的左孩子val 与 第2颗树的右孩子val相等第1颗树的右孩子val 与 第1颗树的左孩子val相等class Solution {public: bool isSymmetric(TreeNode* r...原创 2019-09-25 22:38:43 · 287 阅读 · 0 评论