zoukankan      html  css  js  c++  java
  • LeetCode——Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values.

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [1,2,3].

    Note: Recursive solution is trivial, could you do it iteratively?

    中文:二叉树的前序遍历(根-左-右)。

    能用非递归实现吗?

    递归:

    public class BinaryTreePreorderTraversal {
        public List<Integer> preorderTraversal(TreeNode root) {
        	List<Integer> list = new ArrayList<Integer>();
            if(root == null)
            	return list;
            list.add(root.val);
            list.addAll(preorderTraversal(root.left));
            list.addAll(preorderTraversal(root.right));
            return list;
        }
        // Definition for binary tree
         public class TreeNode {
             int val;
             TreeNode left;
             TreeNode right;
             TreeNode(int x) { val = x; }
         }
    }
    非递归:先把右节点的值压入栈中,再压入左的。弹出左的,弹出右的……。

        public List<Integer> preorderTraversal(TreeNode root){
        	List<Integer> list = new ArrayList<Integer>();
        	if(root == null)
        		return list;
        	Stack<TreeNode> stack = new Stack<TreeNode>();
        	stack.push(root);
        	while(!stack.isEmpty()){
        		TreeNode node = stack.pop();
        		list.add(node.val);  		
        		if(node.right != null)
        			stack.push(node.right);
        		if(node.left != null)
        			stack.push(node.left);
        	}
        	return list;
        }

  • 相关阅读:
    [JavaScript权威指南]Introduce to JavaScript
    IT项目开发的75条管理守则
    .net调用存储过程
    应聘项目经理需要学的
    DropDownList静态数据绑定
    数据库的查询优化技术 (摘)
    UNION运算符
    网站项目策划书
    .net验证码
    小问题,关于Page.Request.QueryString["pro"]
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6704428.html
Copyright © 2011-2022 走看看