树
树刷题
amor_1
这个作者很懒,什么都没留下…
展开
-
判断是否是完全二叉树
判断是否是完全二叉树层序遍历,若一个结点有右孩子,没有左孩子,直接返回false用leaf来标记后续必须为叶结点,如果leaf为true,而左右孩子有一个不为空的情况下,返回false如果左孩子为空,或者左右孩子均为空,则将leaf置为true,后面遍历到的结点应该必须是叶结点。public boolean tree(Node head){ if(head == null) re...原创 2020-03-24 20:13:19 · 200 阅读 · 0 评论 -
求根到叶子结点数字之和
求根到叶子结点数字之和描述给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]1/ 2 3输出: 25解释:从根到叶子节点路径 1->2 代...原创 2020-03-24 11:25:44 · 109 阅读 · 0 评论 -
路径之和
路径之和描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ ...原创 2020-03-23 15:40:30 · 283 阅读 · 0 评论 -
二叉树的深度
二叉树的最小深度描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最小深度 2.思路和代码递归:如果root == NULL,返回0如果root->leftNULL &...原创 2020-03-23 13:54:32 · 86 阅读 · 0 评论 -
将有序数组转换成二叉搜索树
将有序数组转换成二叉搜索树描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 ...原创 2020-03-21 15:43:03 · 107 阅读 · 0 评论 -
验证二叉搜索树
验证二叉搜索树描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true递归class Solution {public: bool isValidBST(TreeNode...原创 2020-03-21 15:34:23 · 51 阅读 · 0 评论 -
不同的二叉搜索树
不同的二叉搜索树描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2/ / ...原创 2020-03-21 14:37:59 · 82 阅读 · 0 评论 -
从前序和中序遍历构造二叉树
从前序和中序遍历构造二叉树描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7思路和代码没有思路,学过数据结构的好像都会,仔细斟酌一下代码即可。树最常见的思路就...原创 2020-03-21 10:58:04 · 195 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针描述给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 ...原创 2020-03-20 14:54:14 · 73 阅读 · 0 评论 -
二叉树展开为链表
二叉树展开为链表描述给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456思路和代码如果root->left == NULL,那么root = root->rightroot->left != NULL,找到左子树的最右节点,root的右子树应该挂在这个最右节点的...原创 2020-03-20 14:22:09 · 50 阅读 · 0 评论 -
平衡二叉树
平衡二叉树描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。思路和代码首先看递归求二叉树高度的函数int height(TreeNode* root) ...原创 2020-03-20 13:43:58 · 59 阅读 · 0 评论 -
对称二叉树
对称二叉树描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:思路和代码还是递归class Solution {public: bool isSymmetric(TreeNode* root) ...原创 2020-03-20 13:28:00 · 82 阅读 · 0 评论 -
相同的树
相同的树描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true思路和代码先序递归解决,很简单。class Solution {public:...原创 2020-03-20 13:15:23 · 75 阅读 · 0 评论 -
恢复二叉搜索树
恢复二叉搜索树描述二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2]1/32输出: [3,1,null,null,2]3/12思路和代码1用一个节点数组list来保存所有的节点,用一个值数组val来保存所有的值...原创 2020-03-20 11:40:27 · 74 阅读 · 0 评论 -
二叉树的先序,中序,后续的递归和非递归方式
二叉树的先序,中序,后续的递归和非递归方式先序递归:public static void preOrderRecur(Node head){ if(head == null) { return ; } System.out.printLn(head.value + " "); preOrderRecur(head.left); preOrderRecur(head.right...原创 2019-08-04 17:12:18 · 115 阅读 · 0 评论