摘要:泛型簡(jiǎn)易實(shí)現(xiàn)根節(jié)點(diǎn)二叉樹的節(jié)點(diǎn)節(jié)點(diǎn)的值左右孩子節(jié)點(diǎn)先序遍歷方法用于測(cè)試二叉查找樹插入二叉樹的節(jié)點(diǎn)節(jié)點(diǎn)的值左右孩子節(jié)點(diǎn)根節(jié)點(diǎn)插入節(jié)點(diǎn)先序遍歷方法用于測(cè)試先序遍歷迭代器
泛型簡(jiǎn)易實(shí)現(xiàn)
public class Tree二叉查找樹 插入{ private Node root; //根節(jié)點(diǎn) public Tree(Node root) { this.root = root; } /*二叉樹的節(jié)點(diǎn)*/ private static class Node { T element; //節(jié)點(diǎn)的值 Node lchild, rchild; //左右孩子節(jié)點(diǎn) public Node(T element, Node lchild, Node rchild) { this.element = element; this.lchild = lchild; this.rchild = rchild; } } /*先序遍歷*/ public void preorder(Node root ) { if(root != null) { System.out.println(root.element); preorder(root.lchild); preorder(root.rchild); } } /*main方法用于測(cè)試*/ public static void main(String[] args) { Node lchild = new Node ("B", null, null); Node rchild = new Node ("C", null, null); Node root = new Node ("A", lchild, rchild); Tree tree = new Tree (root); tree.preorder(tree.root); } }
public class Tree先序遍歷迭代器> { /*二叉樹的節(jié)點(diǎn)*/ private static class Node { T element; //節(jié)點(diǎn)的值 Node lchild, rchild; //左右孩子節(jié)點(diǎn) public Node(T element, Node lchild, Node rchild) { this.element = element; this.lchild = lchild; this.rchild = rchild; } } Node root = null; //根節(jié)點(diǎn) public Tree(Node root) { this.root = root; } /*插入節(jié)點(diǎn)*/ protected Node insert(Node root, Node newNode) { if(root == null) { root = newNode; } else if (root.element.compareTo(root.element) < 0) { root.lchild = insert(root.lchild, newNode); } else { root.rchild = insert(root.rchild, newNode); } return root; } public void insert(T data) { Node newNode = new Node (data, null, null); root = insert(root, newNode); } /*先序遍歷*/ public void preorder(Node root ) { if(root != null) { System.out.println(root.element); preorder(root.lchild); preorder(root.rchild); } } /*main方法用于測(cè)試*/ public static void main(String[] args) { Tree tree = new Tree (null); tree.insert("C"); tree.insert("B"); tree.insert("A"); tree.preorder(tree.root); } }
/** Returns a preorder iterator for this tree. */ public IteratorpreorderIterator() { return new PreorderIterator(); } /*** inner class for a preorder iterator ***/ private class PreorderIterator implements Iterator { private Node nextNode; private PreorderIterator() { // The traversal starts with the root node. nextNode = root; } public boolean hasNext() { return (nextNode != null); } public T next() { if (nextNode == null) throw new NoSuchElementException(); // Store a copy of the key to be returned. T element = nextNode.element; // Advance nextNode. if (nextNode.lchild != null) nextNode = nextNode.lchild; else if (nextNode.rchild != null) nextNode = nextNode.rchild; else { // We"ve just visited a leaf node. // Go back up the tree until we find a node // with a right child that we haven"t seen yet. Node parent = nextNode.parent; Node child = nextNode; while (parent != null && (parent.rchild == child || parent.rchild == null)) { child = parent; parent = parent.parent; } if (parent == null) nextNode = null; // the traversal is complete else nextNode = parent.rchild; } return element; } @Override public void remove() { // TODO Auto-generated method stub } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64129.html
摘要:本篇主要介紹二叉樹的概念二叉樹的表示二叉樹的操作三種遍歷方式實(shí)現(xiàn)求二叉樹的子樹求節(jié)點(diǎn)的父節(jié)點(diǎn)二叉樹高度,可能是考試中的,也可能是面試中的。通常二叉樹的遍歷根據(jù)根節(jié)點(diǎn)的遍歷次序分為先根遍歷中根遍歷后根遍歷。 聲明:碼字不易,轉(zhuǎn)載請(qǐng)注明出處,歡迎文章下方討論交流。 前言:Java數(shù)據(jù)結(jié)構(gòu)與算法專題會(huì)不定時(shí)更新,歡迎各位讀者監(jiān)督。本篇主要介紹二叉樹的概念、二叉樹的表示、二叉樹的操作(三種遍歷...
摘要:是棧,它繼承于。滿二叉樹除了葉結(jié)點(diǎn)外每一個(gè)結(jié)點(diǎn)都有左右子葉且葉子結(jié)點(diǎn)都處在最底層的二叉樹。沒有鍵值相等的節(jié)點(diǎn)。這是數(shù)據(jù)庫(kù)選用樹的最主要原因。 在我們學(xué)習(xí)Java的時(shí)候,很多人會(huì)面臨我不知道繼續(xù)學(xué)什么或者面試會(huì)問什么的尷尬情況(我本人之前就很迷茫)。所以,我決定通過(guò)這個(gè)開源平臺(tái)來(lái)幫助一些有需要的人,通過(guò)下面的內(nèi)容,你會(huì)掌握系統(tǒng)的Java學(xué)習(xí)以及面試的相關(guān)知識(shí)。本來(lái)是想通過(guò)Gitbook的...
摘要:樹和樹的算法一樹樹的概念樹英語(yǔ)是一種抽象數(shù)據(jù)類型或是實(shí)作這種抽象數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),用來(lái)模擬具有樹狀結(jié)構(gòu)性質(zhì)的數(shù)據(jù)集合。一種時(shí)間復(fù)雜度額外空間復(fù)雜度的二叉樹的遍歷方式,為二叉樹的節(jié)點(diǎn)個(gè)數(shù)。 樹和樹的算法 一、樹 1.1 樹的概念 樹(英語(yǔ):tree)是一種抽象數(shù)據(jù)類型(ADT)或是實(shí)作這種抽象數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),用來(lái)模擬具有樹狀結(jié)構(gòu)性質(zhì)的數(shù)據(jù)集合。它是由n(n>=1)個(gè)有限節(jié)點(diǎn)組成一個(gè)...
摘要:樹和樹的算法一樹樹的概念樹英語(yǔ)是一種抽象數(shù)據(jù)類型或是實(shí)作這種抽象數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),用來(lái)模擬具有樹狀結(jié)構(gòu)性質(zhì)的數(shù)據(jù)集合。一種時(shí)間復(fù)雜度額外空間復(fù)雜度的二叉樹的遍歷方式,為二叉樹的節(jié)點(diǎn)個(gè)數(shù)。 樹和樹的算法 一、樹 1.1 樹的概念 樹(英語(yǔ):tree)是一種抽象數(shù)據(jù)類型(ADT)或是實(shí)作這種抽象數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),用來(lái)模擬具有樹狀結(jié)構(gòu)性質(zhì)的數(shù)據(jù)集合。它是由n(n>=1)個(gè)有限節(jié)點(diǎn)組成一個(gè)...
閱讀 2477·2021-09-29 09:34
閱讀 3313·2021-09-23 11:21
閱讀 2504·2021-09-06 15:00
閱讀 1132·2019-08-30 15:44
閱讀 2031·2019-08-29 17:23
閱讀 3004·2019-08-29 16:44
閱讀 3061·2019-08-29 13:13
閱讀 1940·2019-08-28 18:12