Swift-二叉树某一深度的链表

2017-05-14  本文已影响29人  FlyElephant

题目:对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表(比如:若一棵树的深度为D,则会创建出D个链表).

核心代码:
<pre><code>` func createLevelList(node:TreeNode?) -> [[String]]? {
if node == nil {
return nil
}

    var lists:[[String]] = []
    createLevelLinkedList(root: node, lists: &lists, level: 0)
    return lists
}

func createLevelLinkedList(root:TreeNode?,lists:inout [[String]],level:Int) {
    if root == nil {
        return
    }
    
    if lists.count == level { // 当前level没有数据
        let levelData:[String] = [root!.data!]
        lists.append(levelData)
    } else {
         lists[level].append(root!.data!)
    }
    
    createLevelLinkedList(root: root?.leftChild, lists: &lists, level: level + 1)
    createLevelLinkedList(root: root?.rightChild, lists: &lists, level: level + 1)
}`<code></pre>

测试代码:
<pre><code>var searchLevelData:[[String]]? = binarySearchTree.createLevelList(node: searchNode) if searchLevelData != nil { print("FlyElephant---层级链表数据---\(searchLevelData!)") }</code></pre>

FlyElephant.png
上一篇 下一篇

猜你喜欢

热点阅读