1. 程式人生 > 實用技巧 >LeetCode二叉樹的前序遍歷Swift

LeetCode二叉樹的前序遍歷Swift

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public var val: Int
 *     public var left: TreeNode?
 *     public var right: TreeNode?
 *     public init() { self.val = 0; self.left = nil; self.right = nil; }
 *     public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
 *     public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
 *         self.val = val
 *         self.left = left
 *         self.right = right
 *     }
 * }
 
*/ class Solution { var res:[Int] = [] func preorderTraversal(_ root: TreeNode?) -> [Int] { if root == nil {return []} res.append(root!.val) preorderTraversal(root!.left) preorderTraversal(root!.right) return res } }

概念

前序遍歷:根節點-左子樹-右子樹

中序遍歷:左子樹-根節點-右子樹

後序遍歷:左子樹-右子樹-根節點

層次遍歷:一層一層遍歷

前序遍歷:ABDECFG
中序遍歷:DBEAFCG
後序遍歷:DEBFGCA
層序遍歷:ABCDEFG