二叉树的先序、中序、后续遍历【Java】
夫陶公清風(fēng)千古,余又何人,敢稱庶幾
文章目錄
- 介紹
- 一、編寫(xiě)節(jié)點(diǎn)類
- 二、 遍歷二叉樹(shù)
- 先序遍歷
- 中序遍歷
- 后序遍歷
- 三、創(chuàng)建一棵樹(shù)
介紹
在計(jì)算機(jī)科學(xué)中,二叉樹(shù)(英語(yǔ):Binary tree)是每個(gè)節(jié)點(diǎn)最多只有兩個(gè)分支(即不存在分支度大于2的節(jié)點(diǎn))的樹(shù)結(jié)構(gòu)。通常分支被稱作“左子樹(shù)”或“右子樹(shù)”。二叉樹(shù)的分支具有左右次序,不能隨意顛倒。
一、編寫(xiě)節(jié)點(diǎn)類
一個(gè)節(jié)點(diǎn)就代表需要?jiǎng)?chuàng)建一個(gè)對(duì)象,就像這樣TreeNode root=new TreeNode(10),這樣我們就創(chuàng)建了一個(gè)根節(jié)點(diǎn),簡(jiǎn)直so easy,并且根節(jié)點(diǎn)的值為10,如果我們需要?jiǎng)?chuàng)建10個(gè)節(jié)點(diǎn)(就是那種小圈圈)就需要?jiǎng)?chuàng)建10個(gè)對(duì)象(new 10次)。節(jié)點(diǎn)類包括兩個(gè)關(guān)鍵的屬性,一個(gè)left和一個(gè)right分別用來(lái)保存左孩紙和右孩紙。其中val是我隨便弄的變量,用來(lái)保存數(shù)據(jù)。
public class TreeNode {int val; //數(shù)據(jù)TreeNode left; //左孩紙TreeNode right; // 右孩紙TreeNode() {}TreeNode(int val) {this.val = val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;} }二、 遍歷二叉樹(shù)
先序遍歷
public static void preTraversal(TreeNode root) {if (root != null) {System.out.println(root.val);preTraversal(root.left);preTraversal(root.right);}}中序遍歷
public static void inTraversal(TreeNode root) {if (root != null) {inTraversal(root.left);System.out.println(root.val);inTraversal(root.right);}}后序遍歷
private static void posTraversal(TreeNode root) {if (root != null) {posTraversal(root.left);posTraversal(root.right);System.out.println(root.val);}}三、創(chuàng)建一棵樹(shù)
package com.breez.dsa.tree.demo1;public class Tree {public static void preTraversal(TreeNode root) {...}public static void inTraversal(TreeNode root) {...}private static void posTraversal(TreeNode root) {...}public static void main(String[] args) {TreeNode root = new TreeNode(3);TreeNode root2 = new TreeNode(9);TreeNode root3 = new TreeNode(5);TreeNode root4 = new TreeNode(6);TreeNode root5 = new TreeNode(15);TreeNode root6 = new TreeNode(7);TreeNode root7 = new TreeNode(8);root.left = root2;root.right = root3;root2.left = root4;root2.right = root5;root3.left = root6;root6.left = root7;System.out.println("=================先序遍歷=====================");preTraversal(root);System.out.println("=================中序遍歷=====================");inTraversal(root);System.out.println("=================后序遍歷=====================");posTraversal(root);}}通過(guò)下面幾行代碼我們就構(gòu)造出了下圖所示的二叉樹(shù)
root.left = root2;
root.right = root3;
root2.left = root4;
root2.right = root5;
root3.left = root6;
root6.left = root7;
運(yùn)行結(jié)果:
最后說(shuō)一句:我太菜了
總結(jié)
以上是生活随笔為你收集整理的二叉树的先序、中序、后续遍历【Java】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 撤销EXCLE工作表保护密码
- 下一篇: java 快速生成有残午餐_写出优质Ja