ツリーの各ノードを上から下へ印刷
1535 ワード
タイトルの説明:
ツリーの各ノードを上から下に印刷し、同レイヤノードを左から右に印刷します.
問題解決の考え方:
二叉木先序遍歴の方法でデータを遍歴し、一つのキューで遍歴したデータを格納し、最後にデータの出キューに注意すればいい.一つの問題に注意しなければならない.JAVAで書いたコードqueueの初期化ではnewの方法は使えない.queueは抽象的なデータ構造であり、インスタンス化はできないので、他の方法でインスタンス化しなければならない.ここではlinklistを用いてインスタンス化しています.
関連する解題コード:
ツリーの各ノードを上から下に印刷し、同レイヤノードを左から右に印刷します.
問題解決の考え方:
二叉木先序遍歴の方法でデータを遍歴し、一つのキューで遍歴したデータを格納し、最後にデータの出キューに注意すればいい.一つの問題に注意しなければならない.JAVAで書いたコードqueueの初期化ではnewの方法は使えない.queueは抽象的なデータ構造であり、インスタンス化はできないので、他の方法でインスタンス化しなければならない.ここではlinklistを用いてインスタンス化しています.
関連する解題コード:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Offer {
public static ArrayListPrintFromTopToBottom(TreeNode root){
ArrayListres=new ArrayList<>();
if(root==null){
return res;
}
Queuequeue=new LinkedList();
queue.add(root);
while (queue.size()!=0){
root=queue.remove();
res.add(root.val);
if(root.left!=null){
queue.add(root.left);
}
if(root.right!=null){
queue.add(root.right);
}
}
return res;
}
public static void main(String[] args) {
TreeNode oneNode=new TreeNode(1);
TreeNode twoNode=new TreeNode(2);
TreeNode threeNode=new TreeNode(3);
TreeNode fourNode=new TreeNode(4);
TreeNode fiveNode=new TreeNode(5);
oneNode.left=twoNode;
oneNode.right=threeNode;
twoNode.left=fourNode;
twoNode.right=fiveNode;
ArrayList result = PrintFromTopToBottom(oneNode);
System.out.println(result);
}
}