随笔分类 -  二叉树

摘要:给定一个二叉树, 找到该树中两个指定节点间的最短距离 // A// B C//D E F// D E --> 2// E F --> 4解法一:先求两节点的最近公共祖先,然后层序遍历求三个节点所在位置的深度,然后距离加减就行 func main() { //按数组层序建立二叉树 root:=crea 阅读全文
posted @ 2022-07-03 16:38 知道了呀~ 阅读(396) 评论(0) 推荐(0) 编辑
摘要:func main() { //按数组层序建立二叉树,之后层序输出二叉树 root:=createTree(0,[]int{1,2,3,4,5,6}) ans:=printTree(root) fmt.Println(ans) //先序建立二叉树,之后先序输出二叉树 var tmp *TreeNod 阅读全文
posted @ 2022-07-01 15:51 知道了呀~ 阅读(201) 评论(2) 推荐(1) 编辑
摘要:https://leetcode.cn/problems/P5rCT8/ /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * 阅读全文
posted @ 2022-06-28 21:33 知道了呀~ 阅读(84) 评论(0) 推荐(0) 编辑
摘要:平衡二叉树每一个节点的平衡因子都小于等于1,所以我们判断每一个节点左右子树的深度查是不是小于等于1即可 我们可以从上往下开始判断每一个节点的平衡因子(两个递归,一个求深度,另一个递归树) 也可以从叶子节点往上递归,把每个节点的深度保存再节点中,判断平衡 因子(下面代码就是使用这种方法) #inclu 阅读全文
posted @ 2020-08-04 21:30 知道了呀~ 阅读(614) 评论(0) 推荐(0) 编辑
摘要:建立一个深度为n的完全二叉树,并翻转值为m的子树,输出最后层序输出二叉树的所有节点 节点的值从1开始递增 输入: 4 3 输出 1 2 3 4 5 7 6 8 9 10 11 14 15 12 13 #include<iostream> #include<queue> #include<math.h 阅读全文
posted @ 2020-08-02 16:29 知道了呀~ 阅读(476) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: vector<int> inorderTraversal(TreeNode* root) { stack<TreeNode*> s; vector<int> v; TreeNode* now = root; while (now != NULL || 阅读全文
posted @ 2020-05-15 15:44 知道了呀~ 阅读(339) 评论(0) 推荐(0) 编辑
摘要:使用两个栈来协助完成二叉树的遍历操作。 不难发现,如果我们以“根->右->左”的顺序遍历二叉树,将结果压进栈中,弹栈的时候顺序就是“左->右->根”,也就是后序遍历的结果了。 而“根->右->左”的遍历顺序和先序遍历很像(先序遍历是“根->左->右”) 用stack1协助,对每个结点依次将“根->右 阅读全文
posted @ 2020-05-15 10:43 知道了呀~ 阅读(578) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; //注意判断根为空的情况 if (root == NULL) return res; queue<Tr 阅读全文
posted @ 2020-05-15 09:19 知道了呀~ 阅读(304) 评论(0) 推荐(0) 编辑
摘要:中序遍历输出二叉树是一个递增的序列 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val 阅读全文
posted @ 2020-05-07 16:18 知道了呀~ 阅读(240) 评论(0) 推荐(0) 编辑
摘要:二叉查找树有以下性质: (1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值 (2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值 (3)左、右子树也分别为二叉排序树 (4)没有键值相等的节点 插入(递归) 插入的数据之后要满足二叉树的性质1和2,所以要先找到插入位置,且插入的位 阅读全文
posted @ 2020-03-28 13:46 知道了呀~ 阅读(634) 评论(0) 推荐(0) 编辑
摘要:1、先序序列确定根节点 2、后序序列区分左右子树 #include<iostream> #include<algorithm> #include<vector> #include<math.h> #include<stdio.h> #include<string.h> #include<map> # 阅读全文
posted @ 2019-11-28 16:38 知道了呀~ 阅读(1379) 评论(0) 推荐(0) 编辑
摘要:代码: #include<iostream> #include<algorithm> #include<vector> #include<math.h> #include<stdio.h> #include<string.h> #include<map> #include<queue> #inclu 阅读全文
posted @ 2019-11-28 16:32 知道了呀~ 阅读(4491) 评论(0) 推荐(0) 编辑
摘要:已知前序遍历序列和中序遍历序列,可以唯一确定一棵二叉树。 已知后序遍历序列和中序遍历序列,可以唯一确定一棵二叉树。 但是已知前序遍历序列和后序遍历序列,是不能确定一棵二叉树的。 下面例子通过前序遍历和中序遍历确定唯一的一棵二叉树。 前序遍历:EACBDGF 中序遍历:ABCDEFG 1、首先根据前序 阅读全文
posted @ 2019-11-28 16:02 知道了呀~ 阅读(6508) 评论(0) 推荐(1) 编辑
摘要:一、满二叉树 一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。) 二、完全二叉树 若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉 阅读全文
posted @ 2019-11-03 20:08 知道了呀~ 阅读(59298) 评论(9) 推荐(9) 编辑
摘要:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 二叉树 阅读全文
posted @ 2019-09-04 09:20 知道了呀~ 阅读(1157) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8507 Accepted Submission(s): 3814 Problem D 阅读全文
posted @ 2019-08-30 18:38 知道了呀~ 阅读(358) 评论(0) 推荐(0) 编辑
摘要:H: CBT? Time Limit: 1 s Memory Limit: 128 MB Time Limit: 1 s Memory Limit: 128 MB Time Limit: 1 s Memory Limit: 128 MB Problem Description 对于二叉树,如果这棵树 阅读全文
posted @ 2018-12-04 21:42 知道了呀~ 阅读(555) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示