力扣刷题第二十九天--二叉树

前言

问问自己,刷题的效果真的达到了吗?

内容

一、翻转二叉树

226.翻转二叉树

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

递归
Go 复制代码
func invertTree(root *TreeNode) *TreeNode {
     if root==nil{
        return root
    }
    root.Left,root.Right=root.Right,root.Left
    invertTree(root.Left)
    invertTree(root.Right)

    return root
}
二、对称二叉树

101.对称二叉树

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

递归

我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,p 指针和 q 指针一开始都指向这棵树的根,随后 p 右移时,q 左移,p 左移时,q 右移。每次检查当前 p 和 q 节点的值是否相等,如果相等再判断左右子树是否对称。

Go 复制代码
func isSymmetric(root *TreeNode) bool {
   return  dfs(root.Left,root.Right)
   
}

func dfs(left *TreeNode,right *TreeNode) bool{
    if left==nil&&right==nil{
        return true
    }
    if left==nil||right==nil{
        return false
    }
    if left.Val!=right.Val{
     return false
    }
    return dfs(left.Left,right.Right)&&dfs(left.Right,right.Left)
}
迭代

把递归程序改写成迭代程序

Go 复制代码
func isSymmetric(root *TreeNode)bool{
    u,v:=root,root
   queue:=[]*TreeNode{}
   queue=append(queue,u)
   queue=append(queue,v)
  
    for len(queue)>0{
        u,v = queue[0],queue[1]
          queue=queue[2:]

         if u==nil&&v==nil{//要先判断
          continue
      }
      if u==nil||v==nil{
          return false
      }
    
      if u.Val!=v.Val{
          return false
      }
      queue=append(queue,u.Left)
      queue=append(queue,v.Right)
       queue=append(queue,u.Right)
      queue=append(queue,v.Left)

    }
    return true
}
三、完全二叉树的节点个数

222.完全二叉树的节点个数

给你一棵完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

广度优先搜素
Go 复制代码
func countNodes(root *TreeNode) int {
    var count int
    if root==nil{//没有这个会报错 昨天遇到过
        return 0
    }
    level:=[]*TreeNode{root}
    for len(level)>0{

        temp:=level
        level=nil
        for _,node:=range temp{
           count++
            if node.Left!=nil{
                level=append(level,node.Left)
            }
            if node.Right!=nil{
                level=append(level,node.Right)
            }
        }
       
    }
    return count
}

最后

令人心动的offer啊,能拿到吗?

相关推荐
老赵聊算法、大模型备案5 小时前
北京市生成式人工智能服务已备案信息公告(2025年12月11日)
人工智能·算法·安全·aigc
CoderYanger6 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
厕所博士6 小时前
红黑树原理前置理解—— 2-3 树
算法·2-3树·红黑树原理理解前置
萌>__<新6 小时前
力扣打卡每日一题————除自身外所有元素的乘积
数据结构·算法
xu_yule7 小时前
算法基础—搜索(2)【记忆化搜索+BFS+01BFS+Floodfill]
数据结构·算法
s09071367 小时前
Xilinx FPGA使用 FIR IP 核做匹配滤波时如何减少DSP使用量
算法·fpga开发·xilinx·ip core·fir滤波
老马啸西风7 小时前
成熟企业级技术平台-10-跳板机 / 堡垒机(Bastion Host)详解
人工智能·深度学习·算法·职场和发展
子夜江寒7 小时前
逻辑回归简介
算法·机器学习·逻辑回归
软件算法开发7 小时前
基于ACO蚁群优化算法的多车辆含时间窗VRPTW问题求解matlab仿真
算法·matlab·aco·vrptw·蚁群优化·多车辆·时间窗
another heaven8 小时前
【软考 磁盘磁道访问时间】总容量等相关案例题型
linux·网络·算法·磁盘·磁道