预订遍历三元树

时间:2016-08-06 03:04:43

标签: java tree-traversal preorder ternary-tree

我需要执行三元树的前序遍历。我熟悉二叉树上的遍历,例如:

public void preorder(){

   System.out.println(data); 
   if (left != null)
      left.preorder();
   if (right != null)
      right.preorder();
}

按照Root,Left,Right的顺序遍历。我很困惑如何在添加中间子节点的情况下执行此操作。如果有人能解释这将是伟大的。感谢

2 个答案:

答案 0 :(得分:0)

n-ary树的一般前序遍历如下:

  • 遍历节点本身
  • 如果存在,则遍历子 0
  • 如果存在,则遍历子 1
  • ...
  • 如果存在,则遍历子 n

二叉树碰巧只有子 0 (左)和子 1 (右),但三元树也有一个中间。所以你的遍历在遍历左子树和右子树之间会有一个额外的声明:

if (middle != null)
    middle.preorder();

答案 1 :(得分:0)

遍历左右节点之间的中间节点

public void preOrder(Node node) {
    if (node == null) {
        return;
    }
    System.out.print(" " + node.data);
    preOrder(node.left);
    preOrder(node.middle);
    preOrder(node.right);
}