/*** 面试题8:二叉树的下一个节点* 给定一颗二叉树和其中的一个节点,如何找出中序遍历的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针*/public class No8 {public static void main(String[] args) {int[] pre = {1, 2, 4, 7, 3, 5, 6, 8};int[] in = {4, 7, 2, 1, 5, 3, 8, 6};//使用面试题7重建二叉树来构建测试用例BinaryTree root = No7.reConstructBinaryTree(pre, in);BinaryTree.printInTree(root);BinaryTree result = No8.nextNode(root);System.out.println(result.value);}public static BinaryTree nextNode(BinaryTree currentNode) {if (currentNode == null) {return null;}BinaryTree result;if (currentNode.right != null) {result = currentNode.right;while (result.left != null) {result = result.left;}return result;}if (currentNode == currentNode.pre.left) {return currentNode.pre;} else {result = currentNode.pre;while (result != null) {if (result == result.pre.left) {return result;} else {result = result.pre;}}return null;}}}
寻找二叉树的中序遍历的下一个节点流程图如下:
总结(TODO):
寻找二叉树的前序遍历的下一个节点流程图:
寻找二叉树的后序遍历的下一个节点流程图:
