题解 | 二叉树的前序遍历

/**
 * public class TreeNode {
 *   public var val: Int
 *   public var left: TreeNode?
 *   public var right: TreeNode?
 *   public init(_ val: Int=0, _ left: TreeNode?=nil, _ right: TreeNode?=nil) {
 *     self.val = val
 *     self.left = left
 *     self.right = right
 *   }
 */
public class Solution {
    func preorderTraversal ( _ root: TreeNode?) -> [Int] {
    // write code here
            var result: [Int] = [] // 存储遍历结果的数组
            // 定义递归函数
            func preorder(_ node: TreeNode?) {
			  // 处理空节点的情况
                guard let node = node else { return }
			  // 前序遍历的三个步骤
                result.append(node.val) // 第一步:访问根节点
                preorder(node.left)     // 第二步:遍历左子树
                preorder(node.right)    // 第三步:遍历右子树

            }

            preorder(root)  // 开始遍历
            return result
        }
}

算法核心思想 :
前序遍历的顺序是:根节点 -> 左子树 -> 右子树。也就是说,对于任何一个节点,我们都要先访问该节点本身,然后再访问它的左子树,最后访问它的右子树。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务