在二叉树T中,编写一个非递归程序输出该树的所有叶子结点。

用java编写谢谢!
2025-02-25 18:04:41
推荐回答(1个)
回答1:

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;


public class Solutions {
public static class TreeNode {
TreeNode left = null;
TreeNode right = null;
int value;
TreeNode(int value){
this.value = value;
}

@Override
public String toString() {
// TODO Auto-generated method stub
return "";
}
}


public List getLeaf(TreeNode root) {
List result = new LinkedList();
Queue nodeQueue = new LinkedList();
TreeNode node = null;
nodeQueue.add(root);
while(!nodeQueue.isEmpty()){
node = nodeQueue.poll();
if(node.left == null){
if(node.right == null){
result.add(node);
}else{
nodeQueue.add(node.right);
}
}else{
nodeQueue.add(node.left);
if(node.right != null){
nodeQueue.add(node.right);
}
}
}

return result;
}

public static void main(String[] args) {
TreeNode root = new TreeNode(0);
root.left = new TreeNode(1);
root.right = new TreeNode(2);
root.left.left = new TreeNode(3);
root.left.right = new TreeNode(4);
root.right.left = new TreeNode(5);
root.right.right = new TreeNode(6);
Solutions s = new Solutions();
System.out.println(s.getLeaf(root));
//[]
}
}