面试题-算法:二叉树的前序遍历

今天说下二叉树的前序遍历,先来一颗二叉树熟悉熟悉:

前序遍历:先输出该节点,然后输出左孩子,然后输出右孩子。

 

public class Tree {

 

    //定义一颗树

    public static class TreeNode{

        int val;

        //左孩子

        private TreeNode left;

        //右孩子

        private TreeNode right;

 

        TreeNode(int x){
            val = x;
         }
}
 

public static List<Integer> preOrder(TreeNode root){

        //结果

        List<Integer> list = new LinkedList<>();

        //栈

        Stack<TreeNode> stack = new Stack<>();
        if(root ==null){
           return list;
        }

           stack.push(root);

           while(!stack.isEmpty()){

            //栈顶元素出栈

            TreeNode treeNode = stack.pop();

            list.add(treeNode.val);

            //左孩子是否存在

            if(treeNode.right!=null){
                stack.push(treeNode.right);

            }

            //右孩子是否存在

            if(treeNode.left!=null){
                stack.push(treeNode.left);
            }
}
return list;
}

public static void main(String[] args) {
        //初始化二叉树
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        //例如:上述初始化的二叉树,前序遍历输出1,2,4,5,3
        List<Integer> integers = preOrder(root);
        System.out.println(integers);
}

}

 

老铁们,更多请关注公众号:别明天就今天吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值