劍指offer22

package jianzhiOffer;

import java.util.ArrayList;

/**
 * 從上往下打印出二叉樹的每一個節點,同層節點從左至右打印。
 * 
 * @author user 思路:本題中咱們利用層序遍歷的思想,首先將樹中全部節點 按照一層從左到右依次保存到ArrayList中,而後在逐一取出
 *         節點的值添加到集合中,最後返回集合。
 */

class TreeNode3 {
	int val = 0;
	TreeNode3 left = null;
	TreeNode3 right = null;

	public TreeNode3(int val) {
		this.val = val;

	}

}

public class ch22 {

	int i = 0;
	int count = 0;
	boolean flag = true;
	ArrayList<Integer> arr = new ArrayList<>();

	public ArrayList<Integer> PrintFromTopToBottom(TreeNode3 root) {
		ArrayList<TreeNode3> node = new ArrayList<>();
		if (root != null) {
			node.add(root);
			while (flag) {
				if (root.left != null) {
					node.add(root.left);
					count++;
				}
				if (root.right != null) {
					node.add(root.right);
					count++;
				}
				// i老是一層一層從左往右的移動
				if (i < count) {
					i++;
					root = node.get(i);
				} else {
					flag = false;
				}
			}
		}
		for (int i = 0; i < node.size(); i++) {
			arr.add(node.get(i).val);
		}
		return arr;
	}
}
相關文章
相關標籤/搜索