【问题标题】:Returning a Tree Inorder Traversal Results返回树中序遍历结果
【发布时间】:2016-05-31 11:36:44
【问题描述】:

我是 Javascript 新手。下面我有一个代码,它使用中序遍历方法递归遍历我的树并使用 document.write 打印结果。我的问题不是打印结果,我只想返回结果以供进一步使用。我该怎么做?

function inOrder(node) {
    if (!(node == null)) {
        inOrder(node.left);
        document.write(node.toString());
        inOrder(node.right);
    }
}

感谢您的帮助。非常感谢 =)

【问题讨论】:

    标签: javascript data-structures


    【解决方案1】:

    您可以使用数组作为结果

    function getAllNodes(node) {
    
        function inOrder(node) {
            if (node) {
                inOrder(node.left);
                result.push(node.toString()); // push instead of output.
                inOrder(node.right);
            }
        }
    
        var result = [];
        inOrder(node);
        return result;
    }
    

    另一种解决方案是在函数中添加一个参数并将结果收集到一个数组中。

    function inOrder(node, result) {
        if (node) {
            inOrder(node.left, result);
            result.push(node.toString());
            inOrder(node.right, result);
        }
    }
    
    var result = [];
    inOrder(node, result);
    

    结果为字符串

    function getAllNodes(node) {
    
        function inOrder(node) {
            if (node) {
                inOrder(node.left);
                result += node.toString() + ', ';
                inOrder(node.right);
            }
        }
    
        var result = '';
        inOrder(node);
        return result;
    }
    

    【讨论】:

    • 谢谢你,尼娜。今天学到了新的一课 =)
    • 尼娜,有没有办法不使用数组?因为我只需要返回String格式的结果。谢谢=)
    • 是的,可以在提案 1 中使用字符串而不是数组,或者在提案 2 中获取数组并使用 Array#join
    猜你喜欢
    • 2013-05-10
    • 2018-08-10
    • 2015-01-21
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多