给定深度的节点的快速二叉树列表

黎庆荣

我正在为二叉树编写Swift算法。我的目标是特定深度创建节点列表,例如

func listNodeAt(_n: Int) --> [T] {

}

这是我的树班

public class BinaryTreeNode<T:Comparable> {

    //Value and children vars
    public var value:T
    public var leftChild:BinaryTreeNode?
    public var rightChild:BinaryTreeNode?
    public weak var parent:BinaryTreeNode?

    //Initialization
    public convenience init(value: T) {
        self.init(value: value, left: nil, right: nil, parent:nil)
    }

    public init(value:T, left:BinaryTreeNode?, right:BinaryTreeNode?, parent:BinaryTreeNode?) {
        self.value = value
        self.leftChild = left
        self.rightChild = right
        self.parent = parent
    }
}

我已经建立了一个辅助函数来计算节点的深度

//Depth
    public func depth() -> Int {
        guard var node = parent else {
            return 0
        }

        var depth = 1
        while let parent = node.parent {
            depth = depth + 1
            node = parent
        }

        return depth
    }

我们如何实现所需的功能?

萨钦·瓦斯(Sachin Vas)
func listNodeAt(_ n: Int) -> [T] {
    return getElementsAt(n, node: self)
}

private func getElementsAt(_ n: Int, node: BinaryTreeNode<T>, traversingDepth: Int = 0) -> [T] {
        var array = Array<T>()
        if traversingDepth < n {
            if let left = node.leftChild {
                array = array + getElementsAt(n, node: left, traversingDepth: traversingDepth + 1)
            }
            if let right = node.rightChild {
                array = array + getElementsAt(n, node: right, traversingDepth: traversingDepth + 1)
            }
        } else if traversingDepth == n {
            array.append(node.value)
        }
        return array
    }

这是解决方案之一。假设自身是根节点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定二叉树,在每个深度(BFS或DFS)创建所有节点的链表

来自分类Dev

给定二叉树,在每个深度(BFS或DFS)创建所有节点的链表

来自分类Dev

递归创建给定深度的完整二叉树

来自分类Dev

遍历二叉树到给定深度?

来自分类Dev

在二叉树中以相同深度链接节点

来自分类Dev

在二叉树中以相同深度链接节点

来自分类Dev

叶子的二叉树深度

来自分类Dev

查找二叉树的深度

来自分类Dev

叶子的二叉树深度

来自分类Dev

从边缘列表(节点对)构建二叉树

来自分类Dev

给定完美的二叉树,反转二叉树的备用级别节点

来自分类Dev

如何在二叉树中找到距给定节点k个距离的节点

来自分类Dev

在二叉树中,检查给定节点是否为叶节点

来自分类Dev

Haskell-使用Reader monad的二叉树中每个节点的深度

来自分类Dev

二叉树。叶节点的顺序(遍历树)

来自分类Dev

二叉树-删除等级大于或等于给定等级的节点

来自分类Dev

为什么给定的二叉树是用空节点构造的?

来自分类Dev

了解如何计算二叉树的深度

来自分类Dev

Haskell:二叉树深度的尾部递归版本

来自分类Dev

使用BFT的二叉树的最小深度?

来自分类Dev

Leetcode 104二叉树的最大深度

来自分类Dev

OCaml二叉树深度,无堆栈溢出

来自分类Dev

获取二叉树深度的非递归方法

来自分类Dev

Python:二叉树中的最大深度

来自分类Dev

Python:二叉树中的最大深度

来自分类Dev

Scala中二叉树的最大深度

来自分类Dev

给定一棵二叉树,设计一种算法,该算法创建每个深度的所有节点的链表

来自分类Dev

给定数据列表的二叉树中的级别数

来自分类Dev

给定数据列表的二叉树中的级别数

Related 相关文章

热门标签

归档