用javascript打印树

用javascript打印树,javascript,Javascript,我需要打印我的树,但我不知道怎么做。我想我可以使用递归。我想知道有没有更简单的方法?这是代码 var tree = new Object(); string = "23*4+5-"; tree = MakeMeATree(string, string.length - 1); function MakeMeATree(string, t) { var tree = {}; if (t == 0) return; tree.name = string.charAt(t);

我需要打印我的树,但我不知道怎么做。我想我可以使用递归。我想知道有没有更简单的方法?这是代码

var tree = new Object();
string = "23*4+5-";
tree = MakeMeATree(string, string.length - 1);

function MakeMeATree(string, t)
{
    var tree = {};
    if (t == 0) return;
    tree.name = string.charAt(t);
    t--;
    if ( isOperand(string.charAt(t)))
    {
        tree.left = string.charAt(t);
        tree.right = string.charAt(t-1);
        t--;
        tree.left = MakeMeATree(string, t);
    }
    if ( isOperand(string.charAt(t-1)))
    {
        tree.left = string.charAt(t-1);
        tree.right = string.charAt(t);
        t--;
        tree.left = MakeMeATree(string, t);
    }
    else 
    {
        tree.left = string.charAt(t);
        tree.right = string.charAt(t-1);
        t--;
    }
    return tree;
}
另外,我也不确定退货,我的意思是我应该同时使用
returntree
?还是就在最后

UPD: 我想这个函数是有效的

PrintMeTree(tree);
    function PrintMeTree(tree)
    {
        while (tree.name != undefined && tree.left != undefined && tree.right != undefined)
        {
            WScript.Echo(tree.name + " " + tree.left + " " + tree.right);
            PrintMeTree(tree.left)
            PrintMeTree(tree.right)
            return;
        }
    } 

这会让你变成一棵树

function isOperand(term) {
    return /[0-9]/.test(term);
}
function MakeMeATree(string) {
    var p = string.length - 1;
    function consumeTree() {
        var op = string.charAt(p--);
        if (isOperand(op)) {
            return op;
        } else {
            var right = consumeTree();
            var left = consumeTree();
            return {
                name: op,
                left: left,
                right: right
            };
        }

    }
    return consumeTree();
}


var tree = MakeMeATree("23*5+5-");
console.log(JSON.stringify(tree));

/*

{
    "name":"-",
    "left":{
        "name":"+",
        "left":{
            "name":"*",
            "left":"2",
            "right":"3"
        },
        "right":"5"
    },
    "right":"5"
}

*/

树是递归数据结构,因此递归是处理它们的自然方式。将
var tree=new Object()
(或better
…={}
)放在
MakeMeATree
函数中。否则,只有一个对象将被重复覆盖。