来源:力扣(LeetCode) 前序遍历链接:https:leetcodecn。comproblemsbinarytreepreordertraversal 中序遍历链接:https:leetcodecn。comproblemsbinarytreeinordertraversal 后序遍历链接:https:leetcodecn。comproblemsbinarytreepostordertraversal题目描述 二叉树的前序遍历节点访问顺序:根节点、左节点、右节点 二叉树的中序遍历节点访问顺序:左节点、根节点、右节点 二叉树的后序遍历节点访问顺序:左节点、右节点、根节点题目分析 二叉树前中后序遍历主要提供了两种方法:迭代递归前序遍历代码实现publicclassPreOrder{publicstaticvoidmain(String〔〕args){PreOrderpreOrdernewPreOrder();TreeNoderootnewTreeNode(1,null,newTreeNode(2,newTreeNode(3),null));TreeNpreOrder。preorderTraversal(root);preOrder。preorder2(root);}迭代算法paramrootreturnpublicListIntegerpreorder2(TreeNoderoot){ListIntegerlistnewArrayListInteger();if(rootnull){}LinkedListTreeNodestacknewLinkedList();stack。add(root);while(!stack。isEmpty()){TreeNodetreeNodestack。getLast();list。add(treeNode。val);stack。removeLast();if(treeNode。right!null){stack。add(treeNode。right);}if(treeNode。left!null){stack。add(treeNode。left);}}System。out。println(list);}递归paramrootreturnpublicListIntegerpreorderTraversal(TreeNoderoot){ListIntegerlistnewArrayListInteger();order(root,list);System。out。println(list);}privatevoidorder(TreeNoderoot,ListIntegerlist){if(rootnull){}list。add(root。val);if(root。left!null){order(root。left,list);}if(root。right!null){order(root。right,list);}}}中序遍历代码实现publicclassMiddleOrder{publicstaticvoidmain(String〔〕args){MiddleOrderpreOrdernewMiddleOrder();TreeNoderootnewTreeNode(1,null,newTreeNode(2,newTreeNode(3),null));TreeNpreOrder。preorderTraversal(root);preOrder。preorder2(root);}迭代算法paramrootreturnpublicListIntegerpreorder2(TreeNoderoot){ListIntegerlistnewArrayListInteger();if(rootnull){}LinkedListTreeNodestacknewLinkedList();while(root!null!stack。isEmpty()){while(root!null){stack。addLast(root);rootroot。}rootstack。removeLast();list。add(root。val);rootroot。}System。out。println(list);}递归paramrootreturnpublicListIntegerpreorderTraversal(TreeNoderoot){ListIntegerlistnewArrayListInteger();order(root,list);System。out。println(list);}privatevoidorder(TreeNoderoot,ListIntegerlist){if(rootnull){}if(root。left!null){order(root。left,list);}list。add(root。val);if(root。right!null){order(root。right,list);}}}后序遍历代码实现publicclassAfterOrder{publicstaticvoidmain(String〔〕args){AfterOrderpreOrdernewAfterOrder();TreeNoderootnewTreeNode(1,null,newTreeNode(2,newTreeNode(3),null));TreeNpreOrder。preorderTraversal(root);preOrder。preorder2(root);}迭代算法paramrootreturnpublicListIntegerpreorder2(TreeNoderoot){ListIntegerlistnewArrayListInteger();if(rootnull){}LinkedListTreeNodestacknewLinkedList();TreeNwhile(root!null!stack。isEmpty()){while(root!null){stack。addLast(root);rootroot。}rootstack。removeLast();if(root。rightnullroot。rightprev){根节点list。add(root。val);}else{stack。addLast(root);rootroot。}}System。out。println(list);}递归paramrootreturnpublicListIntegerpreorderTraversal(TreeNoderoot){ListIntegerlistnewArrayListInteger();order(root,list);System。out。println(list);}privatevoidorder(TreeNoderoot,ListIntegerlist){if(rootnull){}if(root。left!null){order(root。left,list);}if(root。right!null){order(root。right,list);}list。add(root。val);}}二叉树前中后序遍历,两种方法的复杂度时间复杂度:O(n)空间复杂度:O(n) 好了,今天就到这里,感谢各位看官到这里,不如点个关注吧!