golang算法二叉樹對稱平衡右視圖

100. 相同的樹

給你兩棵二叉樹的根節點 p 和 q ,編寫一個函數來檢驗這兩棵樹是否相同。

如果兩個樹在結構上相同,并且節點具有相同的值,則認為它們是相同的。

示例 1:

在這里插入圖片描述

輸入:p = [1,2,3], q = [1,2,3]
輸出:true
示例 2:

在這里插入圖片描述

輸入:p = [1,2], q = [1,null,2]
輸出:false
示例 3:
在這里插入圖片描述

輸入:p = [1,2,1], q = [1,1,2]
輸出:false

提示:

兩棵樹上的節點數目都在范圍 [0, 100] 內
-104 <= Node.val <= 104

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func isSameTree(p *TreeNode, q *TreeNode) bool {if p==nil||q==nil{return p==q}return p.Val==q.Val&&isSameTree(p.Left,q.Left)&&isSameTree(p.Right,q.Right)
}

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

進階:你可以運用遞歸和迭代兩種方法解決這個問題嗎

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func isEqual(left *TreeNode,right *TreeNode)bool{if left==nil||right==nil{return left==right}return left.Val==right.Val&&isEqual(left.Left,right.Right)&&isEqual(left.Right,right.Left)
}
func isSymmetric(root *TreeNode) bool {return isEqual(root.Left,root.Right)
}

110. 平衡二叉樹

給定一個二叉樹,判斷它是否是 平衡二叉樹

示例 1:
在這里插入圖片描述

輸入:root = [3,9,20,null,null,15,7]
輸出:true
示例 2:

在這里插入圖片描述

輸入:root = [1,2,2,3,3,null,null,4,4]
輸出:false
示例 3:

輸入:root = []
輸出:true

提示:

樹中的節點數在范圍 [0, 5000] 內
-104 <= Node.val <= 104

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func abs(num int)int{if num>0{return num}else{return -1*num}
}
func getHeight(node *TreeNode)int{if node==nil{return 0}left_height:=getHeight(node.Left)if left_height==-1{return -1}right_height:=getHeight(node.Right)if right_height==-1 || abs(left_height-right_height)>1{return -1}return max(left_height,right_height)+1
}
func isBalanced(root *TreeNode) bool {return getHeight(root)!=-1
}

199. 二叉樹的右視圖

給定一個二叉樹的 根節點 root,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

示例 1:
在這里插入圖片描述

輸入:root = [1,2,3,null,5,null,4]

輸出:[1,3,4]

解釋:

示例 2:
在這里插入圖片描述

輸入:root = [1,2,3,4,null,null,null,5]

輸出:[1,3,4,5]

解釋:

示例 3:

輸入:root = [1,null,3]

輸出:[1,3]

示例 4:

輸入:root = []

輸出:[]

提示:

二叉樹的節點個數的范圍是 [0,100]
-100 <= Node.val <= 100

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func rightSideView(root *TreeNode) []int {ans:=[]int{}var dfs func(root *TreeNode,depth int)dfs=func(root *TreeNode,depth int){if root==nil{return }if depth==len(ans){ans=append(ans,root.Val)}dfs(root.Right,depth+1)dfs(root.Left,depth+1)}dfs(root,0)return ans
}

965. 單值二叉樹

如果二叉樹每個節點都具有相同的值,那么該二叉樹就是單值二叉樹。

只有給定的樹是單值二叉樹時,才返回 true;否則返回 false。

示例 1:

在這里插入圖片描述

輸入:[1,1,1,1,1,null,1]
輸出:true
示例 2:

在這里插入圖片描述

輸入:[2,2,2,5,2]
輸出:false

提示:

給定樹的節點數范圍是 [1, 100]。
每個節點的值都是整數,范圍為 [0, 99] 。

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func isUnivalTree2(root *TreeNode,target int)bool{if root==nil{return true}return root.Val==target&&isUnivalTree2(root.Left,target)&&isUnivalTree2(root.Right,target)
}
func isUnivalTree(root *TreeNode) bool {if root==nil{return true}return isUnivalTree2(root,root.Val)
}

951. 翻轉等價二叉樹

我們可以為二叉樹 T 定義一個 翻轉操作 ,如下所示:選擇任意節點,然后交換它的左子樹和右子樹。

只要經過一定次數的翻轉操作后,能使 X 等于 Y,我們就稱二叉樹 X 翻轉 等價 于二叉樹 Y。

這些樹由根節點 root1 和 root2 給出。如果兩個二叉樹是否是翻轉 等價 的函數,則返回 true ,否則返回 false 。

示例 1:
在這里插入圖片描述

Flipped Trees Diagram

輸入:root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1,3,2,null,6,4,5,null,null,null,null,8,7]
輸出:true
解釋:我們翻轉值為 1,3 以及 5 的三個節點。
示例 2:

輸入: root1 = [], root2 = []
輸出: true
示例 3:

輸入: root1 = [], root2 = [1]
輸出: false

提示:

每棵樹節點數在 [0, 100] 范圍內
每棵樹中的每個值都是唯一的、在 [0, 99] 范圍內的整數

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func flipEquiv(root1 *TreeNode, root2 *TreeNode) bool {if root1==nil||root2==nil{return root1==root2}return root1.Val==root2.Val&&((flipEquiv(root1.Left,root2.Right)&&flipEquiv(root1.Right,root2.Left))||(flipEquiv(root1.Left,root2.Left)&&flipEquiv(root1.Right,root2.Right)))
}

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

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func invertTree(root *TreeNode) *TreeNode {if root==nil{return nil}root.Left,root.Right=root.Right,root.LeftinvertTree(root.Left)invertTree(root.Right)return root
}
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func invertTree(root *TreeNode) *TreeNode {if root==nil{return nil}left:=invertTree(root.Left)right:=invertTree(root.Right)root.Left=rightroot.Right=leftreturn root
}

617. 合并二叉樹

給你兩棵二叉樹: root1 和 root2 。

想象一下,當你將其中一棵覆蓋到另一棵之上時,兩棵樹上的一些節點將會重疊(而另一些不會)。你需要將這兩棵樹合并成一棵新二叉樹。合并的規則是:如果兩個節點重疊,那么將這兩個節點的值相加作為合并后節點的新值;否則,不為 null 的節點將直接作為新二叉樹的節點。

返回合并后的二叉樹。

注意: 合并過程必須從兩個樹的根節點開始。

示例 1:在這里插入圖片描述

輸入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
輸出:[3,4,5,5,4,null,7]
示例 2:

輸入:root1 = [1], root2 = [1,2]
輸出:[2,2]

提示:

兩棵樹中的節點數目在范圍 [0, 2000] 內
-104 <= Node.val <= 104

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {if root1==nil{return root2}if root2==nil{return root1}root1.Val+=root2.Valleft:=mergeTrees(root1.Left,root2.Left)right:=mergeTrees(root1.Right,root2.Right)root1.Left=leftroot1.Right=rightreturn root1
}
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {if root1==nil{return root2}if root2==nil{return root1}return &TreeNode{root1.Val+root2.Val,mergeTrees(root1.Left,root2.Left),mergeTrees(root1.Right,root2.Right),}
}

2331. 計算布爾二叉樹的值

給你一棵 完整二叉樹 的根,這棵樹有以下特征:

葉子節點 要么值為 0 要么值為 1 ,其中 0 表示 False ,1 表示 True 。
非葉子節點 要么值為 2 要么值為 3 ,其中 2 表示邏輯或 OR ,3 表示邏輯與 AND 。
計算 一個節點的值方式如下:

如果節點是個葉子節點,那么節點的 值 為它本身,即 True 或者 False 。
否則,計算 兩個孩子的節點值,然后將該節點的運算符對兩個孩子值進行 運算 。
返回根節點 root 的布爾運算值。

完整二叉樹 是每個節點有 0 個或者 2 個孩子的二叉樹。

葉子節點 是沒有孩子的節點。

示例 1:
在這里插入圖片描述

輸入:root = [2,1,3,null,null,0,1]
輸出:true
解釋:上圖展示了計算過程。
AND 與運算節點的值為 False AND True = False 。
OR 運算節點的值為 True OR False = True 。
根節點的值為 True ,所以我們返回 true 。
示例 2:

輸入:root = [0]
輸出:false
解釋:根節點是葉子節點,且值為 false,所以我們返回 false 。

提示:

樹中節點數目在 [1, 1000] 之間。
0 <= Node.val <= 3
每個節點的孩子數為 0 或 2 。
葉子節點的值為 0 或 1 。
非葉子節點的值為 2 或 3 。

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func detail(root *TreeNode)bool{if root.Left==root.Right{return root.Val==1}left,right:=false,falseif detail(root.Left){left=true}else{left=false}if detail(root.Right){right=true}else{right=false}if root.Val==2{return left||right}else{return left&&right}}
func evaluateTree(root *TreeNode) bool {if root==nil{return false}return detail(root)
}
func evaluateTree(root *TreeNode) bool {if root.Left == root.Right {return root.Val == 1}if root.Val == 2 {return evaluateTree(root.Left) || evaluateTree(root.Right)}return evaluateTree(root.Left) && evaluateTree(root.Right)
}

508. 出現次數最多的子樹元素和

給你一個二叉樹的根結點 root ,請返回出現次數最多的子樹元素和。如果有多個元素出現的次數相同,返回所有出現次數最多的子樹元素和(不限順序)。

一個結點的 「子樹元素和」 定義為以該結點為根的二叉樹上所有結點的元素之和(包括結點本身)。

示例 1:
在這里插入圖片描述

輸入: root = [5,2,-3]
輸出: [2,-3,4]
示例 2:

在這里插入圖片描述

輸入: root = [5,2,-5]
輸出: [2]

提示:

節點數在 [1, 104] 范圍內
-105 <= Node.val <= 105

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func findFrequentTreeSum(root *TreeNode) []int {var dfs func(root *TreeNode)intans:=[]int{}mp:=map[int]int{}max_len:=0dfs=func(root *TreeNode)int{if root==nil{return 0}if root.Left==root.Right{mp[root.Val]++if mp[root.Val]>max_len{max_len=mp[root.Val]}return root.Val}tmp:=root.Val+dfs(root.Left)+dfs(root.Right)mp[tmp]++if mp[tmp]>max_len{max_len=mp[tmp]}return tmp}dfs(root)for k,v:=range mp{if v==max_len{ans=append(ans,k)}}return ans
}

1026. 節點與其祖先之間的最大差值

給定二叉樹的根節點 root,找出存在于 不同 節點 A 和 B 之間的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。

(如果 A 的任何子節點之一為 B,或者 A 的任何子節點是 B 的祖先,那么我們認為 A 是 B 的祖先)

示例 1:

在這里插入圖片描述

輸入:root = [8,3,10,1,6,null,14,null,null,4,7,13]
輸出:7
解釋:
我們有大量的節點與其祖先的差值,其中一些如下:
|8 - 3| = 5
|3 - 7| = 4
|8 - 1| = 7
|10 - 13| = 3
在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。
示例 2:

在這里插入圖片描述

輸入:root = [1,null,2,null,0,3]
輸出:3

提示:

樹中的節點數在 2 到 5000 之間。
0 <= Node.val <= 105

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func abs(num int)int{if num>0{return num}else{return -1*num}
}
func maxAncestorDiff(root *TreeNode) int {var dfs func(root *TreeNode,minNum int,maxNum int)ans:=0dfs=func(root *TreeNode,minNum int,maxNum int){if root==nil{return}if minNum>root.Val{minNum=root.Val}if maxNum<root.Val{maxNum=root.Val}if max(abs(minNum-root.Val),abs(maxNum-root.Val))>ans{ans=max(abs(minNum-root.Val),abs(maxNum-root.Val))}dfs(root.Left,minNum,maxNum)dfs(root.Right,minNum,maxNum)}dfs(root,root.Val,root.Val)return ans
}
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func maxAncestorDiff(root *TreeNode) int {var dfs func(root *TreeNode,mn int,mx int)ans:=0dfs=func(root *TreeNode,mn int,mx int){if root==nil{return}mn=min(mn,root.Val)mx=max(mx,root.Val)ans=max(ans,root.Val-mn,mx-root.Val)dfs(root.Left,mn,mx)dfs(root.Right,mn,mx)}dfs(root,root.Val,root.Val)return ans
}

1372. 二叉樹中的最長交錯路徑

給你一棵以 root 為根的二叉樹,二叉樹中的交錯路徑定義如下:

選擇二叉樹中 任意 節點和一個方向(左或者右)。
如果前進方向為右,那么移動到當前節點的的右子節點,否則移動到它的左子節點。
改變前進方向:左變右或者右變左。
重復第二步和第三步,直到你在樹中無法繼續移動。
交錯路徑的長度定義為:訪問過的節點數目 - 1(單個節點的路徑長度為 0 )。

請你返回給定樹中最長 交錯路徑 的長度。

示例 1:

在這里插入圖片描述

輸入:root = [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1,null,1]
輸出:3
解釋:藍色節點為樹中最長交錯路徑(右 -> 左 -> 右)。
示例 2:

在這里插入圖片描述

輸入:root = [1,1,1,null,1,null,null,1,1,null,1]
輸出:4
解釋:藍色節點為樹中最長交錯路徑(左 -> 右 -> 左 -> 右)。
示例 3:

輸入:root = [1]
輸出:0

提示:

每棵樹最多有 50000 個節點。
每個節點的值在 [1, 100] 之間。

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/func longestZigZag(root *TreeNode) int {if root==nil{return 0}else if root.Left==root.Right{return 0}var dfs func(root *TreeNode,direction int,depth int)maxDepth:=0dfs=func(root *TreeNode,direction int,depth int){if root==nil{maxDepth=max(maxDepth,depth)return}if direction==0{dfs(root.Right,1-direction,depth+1)dfs(root.Left,1-direction,-1)}else{dfs(root.Left,1-direction,depth+1)dfs(root.Right,1-direction,-1)}   }dfs(root,0,-1)dfs(root,1,-1)return maxDepth
}

1080. 根到葉路徑上的不足節點🪝

給你二叉樹的根節點 root 和一個整數 limit ,請你同時刪除樹中所有 不足節點 ,并返回最終二叉樹的根節點。

假如通過節點 node 的每種可能的 “根-葉” 路徑上值的總和全都小于給定的 limit,則該節點被稱之為 不足節點 ,需要被刪除。

葉子節點,就是沒有子節點的節點。

示例 1:

在這里插入圖片描述

輸入:root = [1,2,3,4,-99,-99,7,8,9,-99,-99,12,13,-99,14], limit = 1
輸出:[1,2,3,4,null,null,7,8,9,null,14]
示例 2:
在這里插入圖片描述

輸入:root = [5,4,8,11,null,17,4,7,1,null,null,5,3], limit = 22
輸出:[5,4,8,11,null,17,4,7,null,null,null,5]
示例 3:

在這里插入圖片描述

輸入:root = [1,2,-3,-5,null,4,null], limit = -1
輸出:[1,null,-3,4]

提示:

樹中節點數目在范圍 [1, 5000] 內
-105 <= Node.val <= 105
-109 <= limit <= 109

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func sufficientSubset(root *TreeNode, limit int) *TreeNode {if root==nil{return nil}limit-=root.Valif root.Left==root.Right{if limit>0{return nil}return root}root.Left=sufficientSubset(root.Left,limit)root.Right=sufficientSubset(root.Right,limit)if root.Left==nil&&root.Right==nil{return nil}return root
}

還得想想怎么修改

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func sufficientSubset(root *TreeNode, limit int) *TreeNode {var dfs func(root *TreeNode,sum int)intdfs=func(root *TreeNode,sum int)int{if root==nil{return 0}if root.Left==root.Right{return root.Val+sum}result:=max(dfs(root.Left,sum+root.Val),dfs(root.Right,sum+root.Val))if result<limit{root=nil}return result}dfs(root,0)return root
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73214.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++介紹智能指針 十二(1)

普通指針&#xff1a;指向內存區域的地址變量。使用普通指針容易出現一些程序錯誤。 如果一個指針所指向的內存區域是動態分配的&#xff0c;那么這個指針變量離開了所在的作用域&#xff0c;這塊內存也不會自動銷毀。動態內存不進行釋放就會導致內存泄露。如果一個指針指向已…

亞馬遜COSMO算法解讀:新搜索時代的流量分配與DeepBI AI驅動的智能優化策略

亞馬遜COSMO算法的推出&#xff0c;標志著其搜索和推薦系統進入了智能化、個性化的新階段。該算法通過分析用戶購物習慣、搜索歷史、瀏覽行為等數據&#xff0c;為買家提供精準推薦&#xff0c;同時對賣家的運營策略提出了更高的要求。在這一背景下&#xff0c;AI驅動的DeepBI能…

C++編譯問題——1模板函數的實現必須在頭文件中

今天編譯數據結構時&#xff0c;遇見一個編譯錯誤 假設你有一個頭文件 SeqList.h 和一個源文件 SeqList.cpp。 SeqList.h #ifndef SEQLIST_H #define SEQLIST_H#include <stdexcept> #include <iostream>template<typename T> class SeqList { private:sta…

安卓實現魔改版 CRC32 算法

版權歸作者所有&#xff0c;如有轉發&#xff0c;請注明文章出處&#xff1a;https://cyrus-studio.github.io/blog/ 關于 CRC32 算法介紹可以參考這篇文章&#xff1a;常用加解密算法介紹 標準 CRC32 算法 創建 crc32.cpp&#xff0c;使用 C 實現標準 CRC32 算法 #include …

OneHot編碼與OrdinalEncoder編碼的區別與應用解析

OneHot編碼和OrdinalEncoder編碼是兩種常見的類別特征編碼方式&#xff0c;它們的主要目的是將類別數據轉換為數值數據&#xff0c;以便機器學習算法能夠處理。下面是對這兩種編碼方式的詳細解釋和比較&#xff1a; 一、OneHot編碼 1. 定義&#xff1a; OneHot編碼是一種將每…

python離線安裝

Python Releases for Windows | Python.org 下載包地址widows一般是64bit的包 下載完成后雙擊&#xff0c;在彈出的首個頁面會看到下面的圖 第一步&#xff1a;建議手動安裝 第二步&#xff1a;一定要勾選把版本加入到Path路徑 然后就是無腦下一步&#xff0c;到這一步就可…

Web開發-PHP應用文件操作安全上傳下載任意讀取刪除目錄遍歷文件包含

知識點&#xff1a; 1、安全開發-原生PHP-文件安全操作 2、安全開發-原生PHP-上傳讀取刪除包含等 3、安全開發-原生PHP-代碼審計文件安全 一、演示案例-WEB開發-文件安全-上傳下載讀取 文件上傳 $_FILES&#xff1a;PHP中一個預定義的超全局變量&#xff0c;用于在上傳文件時…

自然語言處理:文本聚類

介紹 大家好&#xff0c;博主又來和大家分享自然語言處理領域的知識了。今天給大家分享的內容是自然語言處理中的文本聚類。 文本聚類在自然語言處理領域占據著重要地位&#xff0c;它能將大量無序的文本按照內容的相似性自動劃分成不同的類別&#xff0c;極大地提高了文本處…

JavaScript 運算符詳解

引言 在 JavaScript 編程中&#xff0c;運算符是用于對數據進行操作的特殊符號。通過使用運算符&#xff0c;我們可以實現各種計算、比較和邏輯判斷等功能。JavaScript 中的運算符種類豐富&#xff0c;涵蓋了算術、比較、邏輯、賦值等多個方面。下面將詳細介紹各類運算符及其使…

基于javaweb的SpringBoot個人健康管理系統小程序微信小程序設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

責任鏈模式的C++實現示例

核心思想 責任鏈模式是一種行為設計模式&#xff0c;允許多個對象都有機會處理請求&#xff0c;從而避免請求的發送者與接收者之間的耦合。請求沿著處理鏈傳遞&#xff0c;直到某個對象處理它為止。 解決的問題 ?解耦請求發送者與處理者&#xff1a;請求的發送者無需知道具…

Java 無 GUI 瀏覽器:HtmlUnit 入門及實戰 [特殊字符]

文章目錄 HtmlUnit 入門功能簡介入門案例更多功能HtmlUnit 實戰需求頁面分析編碼參考? 本文目標: HtmlUnit 框架入門HtmlUnit 框架實戰:實現 HtmlUnit 訪問 Web 頁面,并實現 Web 頁面按鈕點擊,同時獲取到下載的文件。HtmlUnit 入門 ?? 官網:https://htmlunit.sourcefo…

微軟 NativeAOT

微軟Native AOT&#xff08;Ahead-Of-Time&#xff09;是.NET平臺中一種新的運行模式&#xff0c;它直接將IL&#xff08;Intermediate Language&#xff0c;中間語言&#xff09;代碼編譯為目標平臺的機器碼發布&#xff0c;與JIT&#xff08;Just-In-Time&#xff0c;即時編譯…

Vue項目搜索引擎優化(SEO)終極指南:從原理到實戰

文章目錄 1. SEO基礎與Vue項目的挑戰1.1 為什么Vue項目需要特殊SEO處理&#xff1f;1.2 搜索引擎爬蟲工作原理 2. 服務端渲染&#xff08;SSR&#xff09;解決方案2.1 Nuxt.js框架實戰原理代碼實現流程圖 2.2 自定義SSR實現 3. 靜態站點生成&#xff08;SSG&#xff09;技術3.1…

Java 枚舉

一、簡介 Java 枚舉是一種強大的工具&#xff0c;其本質上是一個繼承自 java.lang.Enum 的類&#xff0c;用于定義一組固定的常量&#xff0c;每個枚舉常量都是該枚舉類的一個實例。枚舉不僅提供了類型安全性&#xff0c;還可以像普通類一樣擁有字段、方法和構造函數。枚舉的使…

CentOS7安裝DNS服務器bind

文章目錄 安裝DNS服務設置配置文件自定義域名解析完整配置 需求是公司內網服務器無法連接外網&#xff0c;需要在本地搭建DNS服務&#xff0c;這樣物理機器遷移到內網后&#xff0c;通過域名解析訪問服務 DNS服務器 172.25.14.215 ip域名172.25.14.216mysql.server172.25.14.2…

DFS刷題(25.3.13)

題目1——烤雞 題目描述 題解 這是一個簡單的暴搜題目&#xff0c;由于一共由10種配料&#xff0c;每種配料可以放1到3克&#xff0c;因此只需要用dfs對每種配料放入的質量進行暴力搜索即可&#xff0c;如果放入的配料質量之和等于題目給出的美味程度 n n n&#xff0c;記錄一…

C#中除了Dictionary,List,HashSet,HashTable 還有哪些可以保存列表的數據類型?

在 C# 中&#xff0c;除了 Dictionary、List、HashSet 和 Hashtable 之外&#xff0c;還有許多其他可以保存列表或集合類型的數據結構&#xff0c;具體包括以下幾類&#xff1a; &#x1f4cc; 數組類 1. Array&#xff08;數組&#xff09; 固定長度&#xff0c;性能高&…

《Python實戰進階》第21集:數據存儲:Redis 與 MongoDB 的使用場景

第21集&#xff1a;數據存儲&#xff1a;Redis 與 MongoDB 的使用場景 摘要 在現代應用開發中&#xff0c;數據存儲的選擇直接影響系統的性能、擴展性和成本。Redis 和 MongoDB 是兩種極具代表性的數據庫技術&#xff0c;它們分別擅長解決不同場景下的問題。本文將深入探討 Re…

三視圖轉stl導出 空心面片體 networkx shapely triangle numpy-stl

from shapely.geometry import Polygon import triangle from shapely.ops import unary_union from stl import mesh import numpy as np from collections import defaultdict from 三維投影線段尋找 import get_adjusted_clusters,get_clusters,get_intersect_lines import …