开发者

How to print a binary tree of functions/terminals like a lisp statement?

I have a binary tree of functions and terminal values. I'd like to print this tree as a lisp statement would be represented!

For example, a tree with just a root of "+" and开发者_开发知识库 terminals of "2" and 4" would read (+ (2 4)).


You need to do an preorder traversal of the binary tree. So if you have the tree:

      +
  5       -
        3   2

You would want to visit +, 5, -, 3, 2, in that order. You can do this recursively as follows (assuming your nodes have the fields value, left, and right):

  public void preorder() {
    if (leaf == null && right == null) 
      System.out.println(value);
    else {
      System.out.println("(");
      System.out.println(value);
      if(left != null) left.preorder();
      if(right != null) right.preorder();
      System.out.println(")");
    }
  }

Notice that you simply visit the current node, then the left child, then the right child.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜