本文主要是介绍Leetcode 144:二叉树的前序遍历(迭代法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
迭代法:就是不使用递归,利用while循环,重复执行循环体内的代码求解。
思路:利用栈存储节点,然后先让右节点入栈,再让左节点入栈。出栈时才是左、右的顺序。
//前序遍历//迭代法:重复执行一段代码来求解//利用栈,先将根节点的右孩子放进栈,再将左孩子放进栈public static List<Integer> preorderTraversal(TreeNode root){List<Integer> result=new ArrayList<>();Stack<TreeNode> stack=new Stack<>();if(root!=null){stack.push(root);}while (!stack.empty()){TreeNode node=stack.pop(); //取栈顶元素result.add(node.val);if(node.right!=null){stack.push(node.right); //右节点入栈}if(node.left!=null){stack.push(node.left); //左节点入栈}}return result;}
这篇关于Leetcode 144:二叉树的前序遍历(迭代法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!