深度优先遍历和广度优先遍历(Java)
程序员文章站
2022-05-23 11:28:04
...
深度优先遍历:
将先访问到树中最深层次的节点;
public ArrayList<Node> depth(){//深度优先遍历
if(root==null){
throw new RuntimeException("空树!");
}
ArrayList<Node> list=new ArrayList<>();
Stack<Node> stack=new Stack<>();
stack.push(root);
while (stack.isEmpty()==false){
Node node=stack.pop();
list.add(node);
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null){
stack.push(node.left);
}
}return list;
}
广度优先遍历:
逐层访问每层的节点;
public ArrayList<Node> level(){//广度优先遍历
ArrayList<Node> list=new ArrayList<>();
if(root==null){
throw new RuntimeException("空树!");
}
Queue<Node> queue=new ArrayDeque<>();
queue.add(root);
while(queue.isEmpty()==false){
Node node=queue.remove();
list.add(node);
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}return list;
}
上一篇: Oracle之Exp、Imp
下一篇: 管理小型的邮件列表