@@ -515,6 +515,61 @@ var binaryTreePaths = function(root) {
515515};
516516```
517517
518+ Swift:
519+ > 100.相同的树
520+ ``` swift
521+ // 递归
522+ func isSameTree (_ p : TreeNode? , _ q : TreeNode? ) -> Bool {
523+ return _isSameTree3 (p, q)
524+ }
525+ func _isSameTree3 (_ p : TreeNode? , _ q : TreeNode? ) -> Bool {
526+ if p == nil && q == nil {
527+ return true
528+ } else if p == nil && q != nil {
529+ return false
530+ } else if p != nil && q == nil {
531+ return false
532+ } else if p! .val != q! .val {
533+ return false
534+ }
535+ let leftSide = _isSameTree3 (p! .left , q! .left )
536+ let rightSide = _isSameTree3 (p! .right , q! .right )
537+ return leftSide && rightSide
538+ }
539+ ```
540+
541+ > 257.二叉树的不同路径
542+ ``` swift
543+ // 递归/回溯
544+ func binaryTreePaths (_ root : TreeNode? ) -> [String ] {
545+ var res = [String ]()
546+ guard let root = root else {
547+ return res
548+ }
549+ var paths = [Int ]()
550+ _binaryTreePaths3 (root, res : & res, paths : & paths)
551+ return res
552+ }
553+ func _binaryTreePaths3 (_ root : TreeNode, res : inout [String ], paths : inout [Int ]) {
554+ paths.append (root.val )
555+ if root.left == nil && root.right == nil {
556+ var str = " "
557+ for i in 0 ..< (paths.count - 1 ) {
558+ str.append (" \( paths[i] ) ->" )
559+ }
560+ str.append (" \( paths.last ! ) " )
561+ res.append (str)
562+ }
563+ if let left = root.left {
564+ _binaryTreePaths3 (left, res : & res, paths : & paths)
565+ paths.removeLast ()
566+ }
567+ if let right = root.right {
568+ _binaryTreePaths3 (right, res : & res, paths : & paths)
569+ paths.removeLast ()
570+ }
571+ }
572+ ```
518573
519574-----------------------
520575<div align =" center " ><img src =https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width =500 > </img ></div >
0 commit comments