首页 > 编程语言 >代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树

代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树

时间:2024-02-17 09:01:03浏览次数:24  
标签:return nil 示例 root 随想录 bfs 二叉树 第十五天

226. 翻转二叉树

  已解答 简单  

相关标签

相关企业  

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

 

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

输入:root = []
输出:[]

 

提示:

  • 树中节点数目范围在 [0, 100] 内
  • -100 <= Node.val <= 100

func invertTree(root *TreeNode) *TreeNode { if root == nil { return root } root.Left, root.Right = invertTree(root.Right), invertTree(root.Left) return root }

101. 对称二叉树

  已解答 简单  

相关标签

相关企业  

给你一个二叉树的根节点 root , 检查它是否轴对称。

 

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

 

提示:

  • 树中节点数目在范围 [1, 1000] 内
  • -100 <= Node.val <= 100

 

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

 


func isSymmetric(root *TreeNode) bool { var isRevTree func(nodeA,nodeB*TreeNode)bool isRevTree = func(nodeA, nodeB *TreeNode) bool { if nodeA == nil && nodeB == nil { return true } if nodeA == nil || nodeB == nil || nodeA.Val != nodeB.Val { return false } return isRevTree(nodeA.Left, nodeB.Right) && isRevTree(nodeA.Right, nodeB.Left) } return isRevTree(root.Left, root.Right)

102. 二叉树的层序遍历

  已解答 中等  

相关标签

相关企业  

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

 

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

 

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

 


func levelOrder(root *TreeNode) [][]int { varres [][]int if root == nil { return res } bfs := []*TreeNode{root} forlen(bfs) != 0 { levelNode := len(bfs) varcur []int fori := 0; i < levelNode; i++ { curNode := bfs[0] bfs = bfs[1:] cur = append(cur, curNode.Val) if curNode.Left != nil { bfs = append(bfs, curNode.Left) } if curNode.Right != nil { bfs = append(bfs, curNode.Right) } } res = append(res, cur) } return res }

标签:return,nil,示例,root,随想录,bfs,二叉树,第十五天
From: https://www.cnblogs.com/suxinmian/p/18017711

相关文章

  • 代码随想录 day51 打家劫舍
    打家劫舍当前位置偷与不偷取决于上一家的状态也就是有递推式考虑dp当前位置如果偷就是找i-2的位置的钱+当前的nums[i]如果不偷就是i-2的钱两个情况取最大值初始值如果只有0或1家人就特殊处理2家及以上初始0就是nums[0]1就是max(nums[0],nums[1])打家劫舍I......
  • 力扣递归 广度优先搜索之102. 二叉树的层序遍历
    classSolution{   List<List<Integer>>result=newArrayList<>();   publicList<List<Integer>>levelOrder(TreeNoderoot){       if(root==null){           returnresult;       }       traverse(root,0);    ......
  • 力扣递归之 543. 二叉树的直径
    classSolution{//二叉树直径其实就是根到左子树最深+根到右子树最深  intdiameter;    publicintdiameterOfBinaryTree(TreeNoderoot){    calculateDepth(root);    returndiameter;  }    privateintcalculateDe......
  • 力扣递归之101. 对称二叉树
    classSolution{  publicbooleanisSymmetric(TreeNoderoot){    if(root==null){      returntrue;    }    returnisMirror(root.left,root.right);  }    publicbooleanisMirror(TreeNodeleft,Tr......
  • 树状数组-三色二叉树 题解
    题目在这里————————————————————————————————三色二叉树首先题面写的很清楚了是一道树状数组题因为这题的输入方式很特别按二叉树序列所以在输入上要特殊处理如下voidread(intx){//读入+存图以左右子树为形式如l[x]=y即y为x左子树......
  • (18/60)找树左下角的值、路径总和、从中序与后序遍历构造二叉树
    找树左下角的值leetcode:513.找树左下角的值层序迭代法思路层序遍历,每次更新result为每层最左侧元素。复杂度分析时间复杂度:遍历,O(N)。空间复杂度:队列层序遍历,树*似完全二叉树时O(N),树极倾斜时O(logN)。注意点略代码实现/***Definitionforabinarytreenode.......
  • 代码随想录 day51 单词拆分
    单词拆分这里递推式的意义是dp[i]:字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。如果确定dp[j]是true,且[j,i]这个区间的子串出现在字典里,那么dp[i]一定是true。(j<i)。所以递推公式是if([j,i]这个区间的子串出现在字典里&&dp[j]是t......
  • 二叉树
    二叉树「二叉树binarytree」是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含:值、左子节点引用、右子节点引用。/*二叉树节点结构体*/typedefstructTreeNode{intval;//节点值int......
  • 二叉树遍历问题模板
    在二叉树遍历问题中,有三种常见的遍历方式:前序遍历、中序遍历和后序遍历。以下是这三种遍历方式的递归模板:1.前序遍历(PreorderTraversal):defpreorderTraversal(root):ifnotroot:return[]result=[]result.append(root.val)#处理当前节点......
  • 代码随想录算法训练营第十七天| 110.平衡二叉树 257. 二叉树的所有路径 404.左叶
    110.平衡二叉树 题目链接:110.平衡二叉树-力扣(LeetCode)思路:判断平衡二叉树,就是判断两个子树的高度差,继而问题转化为了如何求子树的高度——后序遍历(主要卡在了这里)。递归函数返回的是树的高度,同时用-1来表示退出递归(一开始想着用bool型作为返回值,发现函数不好设计)。同时要关......