题目:对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表(比如:若一棵树的深度为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









网友评论