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;
        }

  • 相关阅读:
    linux进程cpu使用率过高分析与排查
    重启服务器后keepalived,vip找不到
    linux五种IO模型
    redis为什么单线程这么快?
    nginx为什么比apache快?
    redis高可用,主从,哨兵,集群
    git合并远端commit
    查看cpu和内存
    CommitLog文件和ConsumeQueue在文件系统中的映射
    hadoop集群启动
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6704428.html
Copyright © 2011-2022 走看看