打印二叉树的叶节点

Str*_*ger 0 binary-tree

我正在写一个递归函数,打印出二叉树的叶节点.这是我到目前为止所拥有的:

public static void printLeafNodes(BinaryNode<AnyType> t)
{
      if(t == NULL)       
        return;
       if(t.left == NULL && t.right==NULL)      
          System.out.println(t.element); 
       else if(t.left != NULL && t.right == NULL) 
       printLeafNodes(t.left); 

       else 
             printLeafNodes(t.right);      
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以查明我逻辑中的任何流程,我将非常感激.

谢谢.

Ale*_*dre 9

public static void printLeafNodes(BinaryNode<AnyType> t)
{
      if(t == NULL)       
        return;
       if(t.left == NULL && t.right==NULL)      
          System.out.println(t.element); 
       printLeafNodes(t.left); 
       printLeafNodes(t.right);      
}
Run Code Online (Sandbox Code Playgroud)

  • `if(t.left == NULL && t.right == NULL){System.out.println(t.element); 返回; 由于`t.left`和`t.right`为null,继续在这些节点上调用`printLeafNodes`的函数没有多大意义,因为这些调用只会立即返回,所以只需在之后立即停止函数打印.这不是一个必要的步骤,但是它可以使程序不必在没有必要的情况下两次调用`printLeafNodes`. (5认同)
  • 打印后返回并保存两个调用是否更好,因为已知`t.left`和`t.right`为空? (2认同)