日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

小米面试题:合并二叉树

發(fā)布時(shí)間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小米面试题:合并二叉树 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述:

給定兩個(gè)二叉樹(shù),想象當(dāng)你將它們中的一個(gè)覆蓋到另一個(gè)上時(shí),兩個(gè)二叉樹(shù)的一些節(jié)點(diǎn)便會(huì)重疊。
你需要將他們合并為一個(gè)新的二叉樹(shù)。合并的規(guī)則是如果兩個(gè)節(jié)點(diǎn)重疊,那么將他們的值相加作為節(jié)點(diǎn)合并后的新值,否則不為?NULL 的節(jié)點(diǎn)將直接作為新二叉樹(shù)的節(jié)點(diǎn)。
示例?1:

?代碼:

//深度優(yōu)先遍歷 func mergeTrees(t1, t2 *TreeNode) *TreeNode {if t1 == nil {return t2}if t2 == nil {return t1}t1.Val += t2.Val//左子樹(shù)進(jìn)行merget1.Left = mergeTrees(t1.Left, t2.Left)//右子數(shù)進(jìn)行merget1.Right = mergeTrees(t1.Right, t2.Right)return t1 }//廣度優(yōu)先搜索 //廣度優(yōu)先搜索需要借助隊(duì)列 func mergeTrees(t1, t2 *TreeNode) *TreeNode {if t1 == nil {return t2}if t2 == nil {return t1}//合并節(jié)點(diǎn)值merged := &TreeNode{Val: t1.Val + t2.Val}//隊(duì)列queue := []*TreeNode{merged}queue1 := []*TreeNode{t1}queue2 := []*TreeNode{t2}for len(queue1) > 0 && len(queue2) > 0 {node := queue[0]//queue 出隊(duì)queue = queue[1:]node1 := queue1[0]//queue1出隊(duì)queue1 = queue1[1:]node2 := queue2[0]queue2出隊(duì)queue2 = queue2[1:]left1, right1 := node1.Left, node1.Rightleft2, right2 := node2.Left, node2.Rightif left1 != nil || left2 != nil {if left1 != nil && left2 != nil {left := &TreeNode{Val: left1.Val + left2.Val}node.Left = left//入隊(duì)queue = append(queue, left)queue1 = append(queue1, left1)queue2 = append(queue2, left2)} else if left1 != nil {node.Left = left1} else { // left2 != nilnode.Left = left2}}if right1 != nil || right2 != nil {if right1 != nil && right2 != nil {right := &TreeNode{Val: right1.Val + right2.Val}node.Right = rightqueue = append(queue, right)queue1 = append(queue1, right1)queue2 = append(queue2, right2)} else if right1 != nil {node.Right = right1} else { // right2 != nilnode.Right = right2}}}return merged }

?

參考地址:https://leetcode-cn.com/problems/merge-two-binary-trees/solution/he-bing-er-cha-shu-by-leetcode-solution/

?

總結(jié)

以上是生活随笔為你收集整理的小米面试题:合并二叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。