借助栈

求二叉树的前序遍历

http://www.nowcoder.com/questionTerminal/501fb3ca49bb4474bf5fa87274e884b4

    public ArrayList<Integer> preorderTraversal (TreeNode root) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        Stack<TreeNode> stack = new Stack<>();
        TreeNode cur = root; //当前节点
        while(cur!=null){
            list.add(cur.val); //遍历当前节点
            if(cur.right!=null)stack.add(cur.right); //右节点入栈
            cur = cur.left; //当前节点左移到左节点
            if(cur==null){//左节点为空
                if(stack.isEmpty())break; //cur为空,而且栈里面都空了,结束
                cur = stack.pop(); //否则就从栈里面弹出一个,cur指向它继续
            }
        }
        return list;
    }
全部评论

相关推荐

内向的柠檬精在研究求...:西北大学,东北大学,有没有南北大学,北北大学
点赞 评论 收藏
分享
08-19 18:59
已编辑
绍兴文理学院 Java
一只末影酱:一、1w+qps嘛感觉数据有点太夸张了 二、还有就是99.95%这些,本身大部分学生做的小项目基本是100%,因为量太小了,网络抖动问题也基本模拟不出来,感觉这些不太好写 三、你这些项目,都是一个月就做完了,更抽象了,也就是大概意味着,没有技术调研,没有上线测试,
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务