层序
层序创建
参考用层序遍历建一棵二叉树这篇博客,用java实现。与层序遍历一致,需要构建队列来维护层级关系。每构建一个树的节点,就压入队列,只要输入的inputList里面还有,就持续构建树的节点。
/**
* @param inputList:
* @return TreeNode
* @author jiayueyuanfang
* @description 层序构建二叉树
* @date 2023/5/4 下午8:52
*/
static TreeNode createBinaryTreeLevel(LinkedList<Integer> inputList){
// 层序构建构建二叉树
TreeNode root = null;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
if(inputList==null || inputList.isEmpty()){
return null;
}
Integer data = inputList.removeFirst();
root = new TreeNode(data);
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(!inputList.isEmpty()){
node.left = new TreeNode(inputList.removeFirst());
queue.offer(node.left);
}
if(!inputList.isEmpty()){
node.right = new TreeNode(inputList.removeFirst());
queue.offer(node.right);
}
}
return root;
}
层序遍历
static void levelOrderTravelSal(TreeNode root){
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
System.out.println(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
}