NC193 二叉树的前序遍历

NC193 二叉树的前序遍历

二叉树的前序遍历_牛客题霸_牛客网 (nowcoder.com)

144. 二叉树的前序遍历

144. 二叉树的前序遍历 - 力扣(LeetCode)


// //递归
// import java.util.*;
// public class Solution {
//     public void preorder(TreeNode root,List<Integer> list){
//         if(root==null){
//             return;
//         }
//         list.add(root.val);
//         preorder(root.left,list);
//         preorder(root.right,list);
//     }
//     public int[] preorderTraversal (TreeNode root) {
//         List<Integer> list=new ArrayList<>();
//         preorder(root,list);
//         //
//         int[] ret=new int[list.size()];
//         for(int i=0;i<list.size();i++){
//             ret[i]=list.get(i);
//         }
//         return ret;
//     }
// }


// //前序-根左右
// //迭代
// import java.util.*;
// public class Solution {
//     public int[] preorderTraversal (TreeNode root) {
//         if(root==null){
//             return new int[0];
//         }
//         List<Integer> list=new ArrayList<>();
//         Stack<TreeNode> st=new Stack<>();
//         st.push(root);
//         while(st.isEmpty()==false){
//             TreeNode cur=st.pop();
//             list.add(cur.val);
//             //根左右-栈-入栈先右后左
//             if(cur.right!=null){
//                 st.push(cur.right);
//             }
//             if(cur.left!=null){
//                 st.push(cur.left);
//             }
//         }
//         //
//         int[] ret=new int[list.size()];
//         for(int i=0;i<list.size();i++){
//             ret[i]=list.get(i);
//         }
//         return ret;
//     }
// }


//迭代-sameto中序
import java.util.*;
public class Solution {
    public int[] preorderTraversal (TreeNode root) {
        List<Integer> list=new ArrayList<>();
        Stack<TreeNode> st=new Stack<>();
        TreeNode cur=root;
        while(cur!=null||st.isEmpty()==false){
            while(cur!=null){
                list.add(cur.val);
                st.push(cur);
                cur=cur.left;
            }
            cur=st.pop();
            cur=cur.right;
        }
        //
        int[] ret=new int[list.size()];
        for(int i=0;i<list.size();i++){
            ret[i]=list.get(i);
        }
        return ret;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值