1、二叉树后序遍历
#递归形式
public void postOrderTraverse1(TreeNode root){
if(root!=null){
postOrderTraverse1(root.left);
postOrderTraverse1(root.right);
System.out.print(root.val);
}
}
非递归(迭代算法)
private Stack<TreeNode> postSearch2(TreeNode root) {
Stack<TreeNode> stack1 = new Stack<>();
Stack<TreeNode> stack2 = new Stack<>();
if(root==null) return stack2;
stack1.push(root);
while (!stack1.isEmpty()){
TreeNode node = stack1.pop();
stack2.push(node);
if(node.left!=null){
stack1.push(node.left);
}
if(node.right!=null){
stack1.push(node.right);
}
}
return stack2;
}
本文深入探讨了二叉树的后序遍历算法,包括递归和非递归(迭代)两种实现方式。递归方法简洁直观,而非递归方法则使用两个栈来跟踪节点,先将根节点压入栈,再分别处理左右子树,最后返回栈中元素,实现了后序遍历的顺序。
2386

被折叠的 条评论
为什么被折叠?



