ツリーの各ノードを上から下へ印刷

1535 ワード

タイトルの説明:
ツリーの各ノードを上から下に印刷し、同レイヤノードを左から右に印刷します.
問題解決の考え方:
二叉木先序遍歴の方法でデータを遍歴し、一つのキューで遍歴したデータを格納し、最後にデータの出キューに注意すればいい.一つの問題に注意しなければならない.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);
    }
}