仅实现深度遍历,首先需要一个队列Queue,用于保存需要遍历的多叉树节点。算法流程:

        var depth: Int = 0
        var queue = [PDFOutline]()      // 多叉树遍历队列
        
        var tempOutlineMember: outlineMember
        
        queue.append(rootOutline)       // 多叉树顶点入队
        // 多叉树广度优先遍历
        
        while(queue.count != 0) {
            var index: Int = 0
            let node = queue.remove(at: 0)      // 队列的队头元素出队
            var childNode = node.child(at: index)       // 子节点为父节点的第一个邻节点
            
            while(childNode != nil) {
                tempOutlineMember = outlineMember(outline: childNode!, isOpen: false, depth: depth)
                outlineList.append(tempOutlineMember)
                
                queue.append(childNode!)        // 子节点入队
                index += 1
                childNode = node.child(at: index)
            }
        }