mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
添加 二叉树:以为使用了递归,其实还隐藏着回溯 Swift版本
This commit is contained in:
@ -515,6 +515,61 @@ var binaryTreePaths = function(root) {
|
||||
};
|
||||
```
|
||||
|
||||
Swift:
|
||||
> 100.相同的树
|
||||
```swift
|
||||
// 递归
|
||||
func isSameTree(_ p: TreeNode?, _ q: TreeNode?) -> Bool {
|
||||
return _isSameTree3(p, q)
|
||||
}
|
||||
func _isSameTree3(_ p: TreeNode?, _ q: TreeNode?) -> Bool {
|
||||
if p == nil && q == nil {
|
||||
return true
|
||||
} else if p == nil && q != nil {
|
||||
return false
|
||||
} else if p != nil && q == nil {
|
||||
return false
|
||||
} else if p!.val != q!.val {
|
||||
return false
|
||||
}
|
||||
let leftSide = _isSameTree3(p!.left, q!.left)
|
||||
let rightSide = _isSameTree3(p!.right, q!.right)
|
||||
return leftSide && rightSide
|
||||
}
|
||||
```
|
||||
|
||||
> 257.二叉树的不同路径
|
||||
```swift
|
||||
// 递归/回溯
|
||||
func binaryTreePaths(_ root: TreeNode?) -> [String] {
|
||||
var res = [String]()
|
||||
guard let root = root else {
|
||||
return res
|
||||
}
|
||||
var paths = [Int]()
|
||||
_binaryTreePaths3(root, res: &res, paths: &paths)
|
||||
return res
|
||||
}
|
||||
func _binaryTreePaths3(_ root: TreeNode, res: inout [String], paths: inout [Int]) {
|
||||
paths.append(root.val)
|
||||
if root.left == nil && root.right == nil {
|
||||
var str = ""
|
||||
for i in 0 ..< (paths.count - 1) {
|
||||
str.append("\(paths[i])->")
|
||||
}
|
||||
str.append("\(paths.last!)")
|
||||
res.append(str)
|
||||
}
|
||||
if let left = root.left {
|
||||
_binaryTreePaths3(left, res: &res, paths: &paths)
|
||||
paths.removeLast()
|
||||
}
|
||||
if let right = root.right {
|
||||
_binaryTreePaths3(right, res: &res, paths: &paths)
|
||||
paths.removeLast()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user