![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
眼泪划过的星空
关注一下,交流学习,谢谢
展开
-
翻转二叉树(leetcode)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* Treserve(struct TreeNode* root){ if(!root) return NULL; struct TreeNode* prese原创 2021-03-23 15:38:27 · 78 阅读 · 0 评论 -
求二叉树的深度
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int Traverse(struct TreeNode* root, int DepthNum){ if(!root) return DepthNum; DepthNu原创 2021-03-23 14:59:26 · 63 阅读 · 0 评论 -
合并二叉树(leetcode)
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-binary-trees著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * Definition原创 2021-03-22 11:19:54 · 116 阅读 · 0 评论 -
对称的二叉树(leetcode)
实现一个函数,用来判断一棵二叉树是不是对称的.例如,二叉树 [1,3,3,4,5,5,4] 是对称的。 1 / \ 3 3 / \ / \4 5 5 4但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3/** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2021-03-17 23:10:22 · 47 阅读 · 0 评论 -
相同的树(leetcode)
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int SameTree(struct TreeNode* p,原创 2021-03-17 22:30:11 · 98 阅读 · 0 评论 -
创建一个树并且进行三种遍历(前序, 中序, 后序遍历)
#include<stdio.h>#include<stdlib.h>typedef struct NodeTree Tree;struct NodeTree{ char val;//数据域 Tree* left;//左孩子 Tree* right;//右孩子 }; Tree* Create(Tree* T)//创建二叉树 { char ch; scanf("%c", &ch); if(ch=='#'){//利用#作为结束符构建拓展原创 2021-03-16 20:31:56 · 235 阅读 · 0 评论 -
根据二叉树创建字符串
题目:你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int cou原创 2021-03-09 15:39:13 · 76 阅读 · 0 评论 -
从根到叶的二进制数之和
题目:给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。返回这些数字之和。题目数据保证答案是一个 32 位 整数。/** * Definition for a binary tree node. * struct TreeNode { *原创 2021-03-08 12:58:46 · 74 阅读 · 0 评论 -
求路径总和(给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int path(struct TreeNode* node, int addSum, int targetSum){ if(!node) return 0; addSum原创 2021-03-07 11:37:09 · 1864 阅读 · 0 评论 -
树的子结构 C语言 (输入两棵二叉树A和B,判断B是不是A的子结构, 约定空树不是任意一个树的子结构)
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \1 2给定的树 B: 4 /1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值/** * Definition for a binary tree node. * struct TreeNode { * int val; * st原创 2021-02-21 18:59:39 · 246 阅读 · 0 评论 -
判断 子树B 是否为 树A 的子结构(注意:树A中无重复的数值)
int flag;//1 表示存在 -1 表示不存在//对照是否为子结构int Contrast(struct TreeNode* A, struct TreeNode* B){ if(!A){ return -1; } if(B->val!=A->val){ return -1;//不为子结构 } if(B->left){ flag = Contrast(A->le原创 2021-02-21 17:30:33 · 100 阅读 · 0 评论 -
查找 树 中的某个数并返回对应的结点
struct TreeNode* Seek(struct TreeNode* A, int num){ if(!A)return NULL; if(A->val==num){ return A; } struct TreeNode* head1 = Seek(A->left, num); if(head1&&head1->val == num){ return head1;原创 2021-02-21 17:22:13 · 201 阅读 · 0 评论 -
最大二叉树 (一个树,其中每个节点的值都大于其子树中的任何其他值)
最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值。给出最大树的根节点 root。就像之前的问题那样,给定的树是从列表 A(root = Construct(A))递归地使用下述 Construct(A) 例程构造的:如果 A 为空,返回 null否则,令 A[i] 作为 A 的最大元素。创建一个值为 A[i] 的根节点 rootroot 的左子树将被构建为 Construct([A[0], A[1], …, A[i-1]])root 的右子树将被构建为 Construct([A[i原创 2021-02-19 20:27:26 · 313 阅读 · 0 评论 -
给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* _increasingBST(struct TreeNode* root, struct TreeNode* pre){ if(!root){原创 2021-02-17 11:20:39 · 246 阅读 · 0 评论 -
给定一棵二叉搜索树,找出其中第k大的节点。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int nums[1]; struct TreeNode* Traversing(struct TreeNode* root, int *returnSize, int k){ if(!root)原创 2021-02-17 10:32:27 · 163 阅读 · 0 评论 -
从上到下打印二叉树,并且用数组从左到右存储
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; };*/int count;struct TreeNode* Order(struct TreeNode* root,int j , int* * returnColumnSizes, int** nums){ if(!root) return NULL; nums[j][retu.原创 2021-02-16 10:21:07 · 144 阅读 · 0 评论 -
二叉树的中序遍历
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Note: The returned array must be malloced, assume caller calls free(). */int nums[2000];struct原创 2021-02-15 10:55:28 · 52 阅读 · 0 评论 -
给定一个二叉树,判断它是否是高度平衡的二叉树(一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1)(leetcode)
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 // Definition for a binary tree node. // struct TreeNode { // int val; // struct TreeNode *left; // struct TreeNode *right; // }; typedef struct TreeNode node;原创 2021-02-09 16:50:24 · 613 阅读 · 0 评论