算法刷题之二叉树
杰明学编程
这个作者很懒,什么都没留下…
展开
-
145. 二叉树的后序遍历
题目: 给定一个二叉树,返回它的 后序 遍历。 题解思路: 方法一:递归+dfs 函数代码: class Solution { public: vector<int> postorderTraversal(TreeNode* root) { vector<int>res; dfs(root,res); return res; } void dfs(TreeNode *root,vector&l原创 2020-09-07 02:08:24 · 70 阅读 · 0 评论 -
94. 二叉树的中序遍历
题目: 给定一个二叉树,返回它的中序遍历。 方法一:递归 函数代码一: class Solution { vector<int>res; public: vector<int> inorderTraversal(TreeNode* root) { dfs(root,res); return res; } void dfs(TreeNode* root,vector<int>&res)原创 2020-09-07 02:03:22 · 96 阅读 · 0 评论 -
144. 二叉树的前序遍历
题目: 给定一个二叉树,返回它的 前序 遍历。 方法一:递归 函数代码: class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int>res; dfs(root,res); return res; } void dfs(TreeNode* root,vector<int> &res)原创 2020-09-07 01:39:04 · 87 阅读 · 0 评论 -
103. 二叉树的锯齿形层次遍历
题目: 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 方法一:双端队列+duque+层序遍历 函数代码: class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>>res; if(!root)原创 2020-09-07 00:57:46 · 89 阅读 · 0 评论 -
剑指 Offer 27. 二叉树的镜像
同力扣226 :翻转二叉树 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 方法一:引入交换结点temp+递归 推荐函数代码一: class Solution { public: TreeNode* mirrorTree(TreeNode* root) { if(!root) { return NULL; } TreeNode *temp=root->left; root-原创 2020-09-06 22:57:40 · 107 阅读 · 0 评论 -
102. 二叉树的层序遍历
题目: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 题解思路: 方法一:BFS+引入二维数组+一维数组 1.申请一个queue,利用先进先出的特性,把头结点放进去。如果左右结点不为空就放入队列中。 2.一维数组用来存二叉树一层的元素的值,二维数组用来存一维数组。 函数代码: class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) {原创 2020-09-06 22:20:40 · 191 阅读 · 0 评论 -
101. 对称二叉树
方法一:普通解法:递归 函数代码: class Solution { public: bool isSymmetric(TreeNode* root) { if(!root) { return true; } return help(root->left,root->right); } bool help(TreeNode *left,TreeNode *right) {原创 2020-09-06 21:44:42 · 72 阅读 · 0 评论 -
9.2三七笔试
力扣.104. 二叉树的最大深度 题目:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 题解思路: 方法一:队列+层序遍历 函数代码: class Solution { public: int maxDepth(TreeNode* root) { if(!root) { return 0; } queue<TreeNod原创 2020-09-03 00:37:52 · 147 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度
题目: 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 题解思路: 方法:BFS+队列(queue) 函数代码: class Solution { public: int maxDepth(TreeNode* root) { if(!root) { return 0; } queue<TreeNode *>q;原创 2020-08-14 16:50:22 · 92 阅读 · 0 评论