【数据结构】二叉树OJ 目录1.LeetCode965.单值二叉树965. 单值二叉树 - 力扣LeetCode解题思路C语音代码2.LeetCode100.相同的树100. 相同的树 - 力扣LeetCode解题思路C语言代码3.LeetCode101.对称二叉树101. 对称二叉树 - 力扣LeetCode解题思路C语言代码4.LeetCode144.二叉树的前序遍历144. 二叉树的前序遍历 - 力扣LeetCode解题思路C语言代码5.LeetCode94.二叉树的中序遍历94. 二叉树的中序遍历 - 力扣LeetCodeC语言代码6.LeetCode145.二叉树的后序遍历145. 二叉树的后序遍历 - 力扣LeetCodeC语言代码7.LeetCode572.另一棵树的子树572. 另一棵树的子树 - 力扣LeetCode解题思路C语言代码8.牛客TSINGK110 二叉树遍历二叉树遍历_牛客题霸_牛客网C语言代码1.LeetCode965.单值二叉树965. 单值二叉树 - 力扣LeetCode解题思路将二叉树分为根节点和左右子树递归判断二叉树中所有子树的结点是否相等如果不同则返回false判断完全部结点说明全部结点的值都相等返回trueC语音代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool isUnivalTree(struct TreeNode* root) { if(root NULL){ return true; } if((root-left root-left-val ! root-val)||(root - right root-right-val ! root-val)){ return false; } return isUnivalTree(root-left)isUnivalTree(root-right); }2.LeetCode100.相同的树100. 相同的树 - 力扣LeetCode解题思路当两棵树的根节点都为空时两棵树一定相同返回true当两棵树中有一棵为空另一棵不为空时两棵树一定不相同返回false当两棵树都不为空时依次比较根节点和左右子树是否相同。C语言代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool isSameTree(struct TreeNode* p, struct TreeNode* q) { if(p NULL q NULL){ return true; } if(p NULL || q NULL){ return false; } if(p-val ! q-val){ return false; } return isSameTree(p-left,q-left) isSameTree(p-right,q-right); }3.LeetCode101.对称二叉树101. 对称二叉树 - 力扣LeetCode解题思路一棵树是否对称与根节点无关所以可以忽略根节点判断根节点的左右子树是否是对称的即可。本题代码与100相同的树非常相似只是在递归调用时参数由p的左子树和q的左子树、p的右子树和q的右子树比较变为p的左子树和q的右子树、q的右子树和q的左子树比较。C语言代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool _isSymmetric(struct TreeNode* p,struct TreeNode* q) { if(p NULL q NULL){ return true; } if(p NULL || q NULL){ return false; } if(p - val ! q - val){ return false; } return _isSymmetric(p-left,q-right) _isSymmetric(p-right,q-left); } bool isSymmetric(struct TreeNode* root) { return _isSymmetric(root-left,root-right); }4.LeetCode144.二叉树的前序遍历144. 二叉树的前序遍历 - 力扣LeetCode解题思路题目要求返回前序遍历的数组所以遍历二叉树时进行的操作就是将数据存入数组。C语言代码/** * 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 treeSize(struct TreeNode* root){ if(root NULL){ return 0; } return treeSize(root-left) treeSize(root-right) 1; } void preOrder(struct TreeNode* root,int* a,int* pi){ if(root NULL){ return; } a[(*pi)] root-val; preOrder(root-left,a,pi); preOrder(root-right,a,pi); } int* preorderTraversal(struct TreeNode* root, int* returnSize) { *returnSize treeSize(root); int* a (int*)malloc(sizeof(int)*(*returnSize)); int i 0; preOrder(root,a,i); return a; }5.LeetCode94.二叉树的中序遍历94. 二叉树的中序遍历 - 力扣LeetCodeC语言代码/** * 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 treeSize(struct TreeNode* root){ if(root NULL){ return 0; } return treeSize(root-left)treeSize(root-right)1; } void InOrder(struct TreeNode* root,int* a,int* pi){ if(root NULL){ return; } InOrder(root-left,a,pi); a[(*pi)] root-val; InOrder(root-right,a,pi); } int* inorderTraversal(struct TreeNode* root, int* returnSize) { *returnSize treeSize(root); int* a (int*)malloc(sizeof(int)*(*returnSize)); int i 0; InOrder(root,a,i); return a; }6.LeetCode145.二叉树的后序遍历145. 二叉树的后序遍历 - 力扣LeetCodeC语言代码/** * 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 treeSize(struct TreeNode* root){ if(root NULL){ return 0; } return treeSize(root-left)treeSize(root-right)1; } void postOrder(struct TreeNode* root,int* a,int* pi){ if(root NULL){ return; } postOrder(root-left,a,pi); postOrder(root-right,a,pi); a[(*pi)] root-val; } int* postorderTraversal(struct TreeNode* root, int* returnSize) { *returnSize treeSize(root); int* a (int*)malloc(sizeof(int)*(*returnSize)); int i 0; postOrder(root,a,i); return a; }7.LeetCode572.另一棵树的子树572. 另一棵树的子树 - 力扣LeetCode解题思路判断子树的根节点和另一颗树的结点是否相同如果相同则以相同的结点为根节点判断两棵子树是否相同。C语言代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool isSameTree(struct TreeNode* p,struct TreeNode* q){ if(p NULL q NULL){ return true; } if(p NULL || q NULL){ return false; } if(p-val ! q-val){ return false; } return isSameTree(p-left,q-left) isSameTree(p-right,q-right); } bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot) { if(root NULL){ return false; } if(root-val subRoot-val isSameTree(root,subRoot)){ return true; } return isSubtree(root-left,subRoot) || isSubtree(root-right,subRoot); }8.牛客TSINGK110 二叉树遍历二叉树遍历_牛客题霸_牛客网C语言代码#include stdio.h typedef struct BinTree{ struct BinTree* left; struct BinTree* right; char val; }BinTree; BinTree* CreateTree(char* a, int* pi){ if(a[*pi] #){ (*pi); return NULL; } BinTree* root (BinTree*)malloc(sizeof(BinTree)); root-val a[(*pi)]; root-left CreateTree(a, pi); root-right CreateTree(a, pi); return root; } void InOrder(BinTree* root){ if(root NULL){ return; } InOrder(root-left); printf(%c ,root-val); InOrder(root-right); } int main() { char a[100]; scanf(%s,a); int i 0; BinTree* root CreateTree(a, i); InOrder(root); return 0; }完

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/2 15:29:32
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻