二叉树的前序遍历
了解过数据结构的朋友应该都知道,二叉树的前序遍历遵循【中->左->右】的原则,二叉树的中序遍历遵循【左->中->右】的原则,后序遍历【左->右->中】的原则。本题旨在实现对二叉树的前序遍历的实现。
package Strctrue;
import java.util.LinkedList;
import java.util.List;
/*
给定一个二叉树,返回它的 前序 遍历。
*/
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){val = x;}
}
class Solution {
//前序遍历(迭代算法)
public List<Integer> preorderTraversal(TreeNode root) {
//利用有链表定义一个栈,用来存放树中的元素
LinkedList<TreeNode> stack = new LinkedList<>();
//利用链表定义一个的输出集合
LinkedList<Integer> output = new LinkedList<>();
//弱国根节点为空,则返回空
if(root == null) {
return output;
}
//将根节点放入栈中
stack.add(root);
//对链表进行遍历
while (!stack.isEmpty()){
//弹出链表的第一个元素
TreeNode node = stack.pollLast();
//存入输出链表中
output.add(node.val);
//如果右子节点不为空,将其压入链表
if (node.right!=null){
stack.add(node.right);
}
//如果左子节点不为空,将其压入链表
if(node.left!=null){
stack.add(node.left);
}
}
return output;
}
}