上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 43 下一页
摘要: 思想: 先判断是否为空节点; 将左右子树交换,然后调用迭代函数,将左右子树的节点当做根节点再输入迭代函数 最后返回这个树的根节点。 python c++ 阅读全文
posted @ 2019-06-24 16:18 Austin_anheqiao 阅读(121) 评论(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) : val(x), left(NULL), right(... 阅读全文
posted @ 2019-06-24 15:36 Austin_anheqiao 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 递归终止条件:到达叶子节点,即该节点的左右孩子均为空。 路径的拼接:每个节点值 + -> + 左孩子的路径/右孩子的路径(左右均可能有多个路径) 阅读全文
posted @ 2019-06-24 11:09 Austin_anheqiao 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 树的例子 列表表示 树的例子 属性 无论我们在分类树中有多深,都属于根节点 一个节点的所有子节点独立于另一个节点的子节点 每个叶节点是唯一的 词汇和定义 节点 n 的层数为从根结点到该结点所经过的分支数目。 树的高度等于树中任何节点的最大层数。 定义一:树由一组节点和一组连接节点的边组成。树具有以下 阅读全文
posted @ 2019-06-24 10:42 Austin_anheqiao 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 可以根据二叉搜索树的特点来进行解题: 二叉搜索树左边节点的值小于根节点 右边节点的值大于根节点。 所以左右都小于根节点的值说明在左子树上 左右的值大于根节点的值就代表值在右子树上 介于两者中间则输入的本身就是根节点,即为最近公共祖先。 一、遍历 二、递归 阅读全文
posted @ 2019-06-23 18:45 Austin_anheqiao 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 其实就是后序遍历 c++ 阅读全文
posted @ 2019-06-23 15:55 Austin_anheqiao 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 方法: 递归,其实就是比较节点值和 不断减小的sum值 是否相同 注意:递归的其实本质上来说就是给一个最基本的情况,然后让所有情况向这个基本情况靠拢,中间不要考虑那么多。 阅读全文
posted @ 2019-06-23 15:15 Austin_anheqiao 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 解法一:递归 遇到叶子节点不递归,否则接着往子树递归,每次递归层数加1 要确定的是,一定要保证初始输入的节点是有子节点的。因为可能出现只有单子树的情况,所以要先确认这种情况。 具体过程: 1、分析初始条件 空指针:深度为0 单节点:深度为1 1、先确定递归基本条件: 节点指针为空,说明深度为0,返回 阅读全文
posted @ 2019-06-22 17:10 Austin_anheqiao 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 求二叉树是否平衡,根据题目中的定义,高度平衡二叉树是每一个结点的两个子树的深度差不能超过1,那么我们肯定需要一个求各个点深度的函数,然后对每个节点的两个子树来比较深度差,时间复杂度为O(NlgN),代码如下: 上面的方法每个点计算深度的时候都会被访问一次,我们可以进行优化。方法是如果我们发现子树不平 阅读全文
posted @ 2019-06-22 15:51 Austin_anheqiao 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 可以是空树。 性质: 任何父节点的左右子树深度差<=1; BF平衡因子=左子树深度-右子树深度,则所有节点平衡因子-1,0,1; 有些BST初始序列或者插入后对BST的影响,导致可能出现下面这种情况,将导致我们的二叉排序树的效率大大降低: 为了避免这种情况的发生,我们希望可以有一种算法,将我们的不平 阅读全文
posted @ 2019-06-22 15:12 Austin_anheqiao 阅读(320) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 43 下一页