常考数据结构与算法:实现二叉树先序,中序和后序遍历
生活随笔
收集整理的這篇文章主要介紹了
常考数据结构与算法:实现二叉树先序,中序和后序遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
分別按照二叉樹先序,中序和后序打印所有的節點。
?
輸入
{1,2,3}返回值
[[1,2,3],[2,1,3],[2,3,1]]?
import java.util.ArrayList;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; } }public class ThreeOrdersTree {public static void main(String[] args) {}/**** @param root TreeNode類 the root of binary tree* @return int整型二維數組*/public int[][] threeOrders (TreeNode root) {if(null == root){return null;}ArrayList<Integer> arrayList = new ArrayList<>();firstShow(root,arrayList);int[][] arrAll = new int[3][arrayList.size()];for (int i = 0; i < arrayList.size(); i++) {arrAll[0][i] = arrayList.get(i);}arrayList.clear();middleShow(root,arrayList);for (int i = 0; i < arrayList.size(); i++) {arrAll[1][i] = arrayList.get(i);}arrayList.clear();postShow(root,arrayList);for (int i = 0; i < arrayList.size(); i++) {arrAll[2][i] = arrayList.get(i);}return arrAll;}// 前序遍歷private void firstShow(TreeNode root,ArrayList<Integer> arrayList){if(null == root){return;}arrayList.add(root.val);if(null != root.left){firstShow(root.left, arrayList);}if(null != root.right){firstShow(root.right,arrayList);}}// 中序遍歷private void middleShow(TreeNode root,ArrayList<Integer> arrayList){if(null == root){return;}if(null != root.left){middleShow(root.left, arrayList);}arrayList.add(root.val);if(null != root.right){middleShow(root.right,arrayList);}}// 后序遍歷private void postShow(TreeNode root,ArrayList<Integer> arrayList){if(null == root){return;}if(null != root.left){postShow(root.left, arrayList);}if(null != root.right){postShow(root.right,arrayList);}arrayList.add(root.val);} }?
總結
以上是生活随笔為你收集整理的常考数据结构与算法:实现二叉树先序,中序和后序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常考数据结构与算法:二叉树的镜像
- 下一篇: oracle12基本操作