之前给大家介绍了java二叉树前序遍历和中序遍历递归和非递归的实现,接下来要给大家介绍的就是java二叉树后序遍历的递归以及非递归的实现的内容。
访问顺序-左子树-右子树-根节点。
上图的访问结果-AEFDHZMG。
1、递归实现
public void postOrderTraverse(TreeNode root) { if (root != null) { postOrderTraverse(root.left); postOrderTraverse(root.right); System.out.print(root.val + "->"); } }
2、非递归实现
public void postOrderTraverse(TreeNode root) { TreeNode cur, pre = null; Stack < TreeNode > stack = new Stack < > (); stack.push(root); while (!stack.empty()) { cur = stack.peek(); if ((cur.left == null && cur.right == null) || (pre != null && (pre == cur.left || pre == cur.right))) { System.out.print(cur.val + "->"); stack.pop(); pre = cur; } else { if (cur.right != null) stack.push(cur.right); if (cur.left != null) stack.push(cur.left); } } }
对于java二叉树后序遍历的递归以及非递归实现你都清楚了吗?更多相关内容,请继续关注奇Q工具网的java实例栏目来进行了解吧。
推荐阅读: