leetcode第144題 二叉樹前序遍歷

給定一個二叉樹,返回它的 前序 遍歷。

示例:

輸入: [1,null,2,3]
1

2
/
3

輸出: [1,2,3]

進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎?

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    // 遞歸算法
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> ret=new ArrayList<Integer>();
        qianxu(root,ret);
        return ret;

    }
    public void qianxu(TreeNode root,List<Integer> ret){
        if(root!=null){
            ret.add(root.val);
        }else{
            return;
        }
        qianxu(root.left,ret);
        qianxu(root.right,ret);
    }
    // 非遞歸算法
    public List<Integer> preorderTraversal(TreeNode node) {
        List<Integer> ret=new ArrayList<Integer>();
        LinkedList<TreeNode> queue=new LinkedList();
        while(queue.size()!=0||node!=null){
            while(node!=null){
                queue.addLast(node);
                ret.add(node.val);
                node=node.left;
            }
            if(queue.size()!=0){
                node=queue.removeLast();
                node=node.right;
            } 
        }
        return ret;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章