摘要:泛型簡易實現根節點二叉樹的節點節點的值左右孩子節點先序遍歷方法用于測試二叉查找樹插入二叉樹的節點節點的值左右孩子節點根節點插入節點先序遍歷方法用于測試先序遍歷迭代器
泛型簡易實現
public class Tree二叉查找樹 插入{ private Node root; //根節點 public Tree(Node root) { this.root = root; } /*二叉樹的節點*/ private static class Node { T element; //節點的值 Node lchild, rchild; //左右孩子節點 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方法用于測試*/ 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先序遍歷迭代器> { /*二叉樹的節點*/ private static class Node { T element; //節點的值 Node lchild, rchild; //左右孩子節點 public Node(T element, Node lchild, Node rchild) { this.element = element; this.lchild = lchild; this.rchild = rchild; } } Node root = null; //根節點 public Tree(Node root) { this.root = root; } /*插入節點*/ 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方法用于測試*/ 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 } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64129.html
摘要:本篇主要介紹二叉樹的概念二叉樹的表示二叉樹的操作三種遍歷方式實現求二叉樹的子樹求節點的父節點二叉樹高度,可能是考試中的,也可能是面試中的。通常二叉樹的遍歷根據根節點的遍歷次序分為先根遍歷中根遍歷后根遍歷。 聲明:碼字不易,轉載請注明出處,歡迎文章下方討論交流。 前言:Java數據結構與算法專題會不定時更新,歡迎各位讀者監督。本篇主要介紹二叉樹的概念、二叉樹的表示、二叉樹的操作(三種遍歷...
摘要:是棧,它繼承于。滿二叉樹除了葉結點外每一個結點都有左右子葉且葉子結點都處在最底層的二叉樹。沒有鍵值相等的節點。這是數據庫選用樹的最主要原因。 在我們學習Java的時候,很多人會面臨我不知道繼續學什么或者面試會問什么的尷尬情況(我本人之前就很迷茫)。所以,我決定通過這個開源平臺來幫助一些有需要的人,通過下面的內容,你會掌握系統的Java學習以及面試的相關知識。本來是想通過Gitbook的...
閱讀 2465·2021-09-29 09:34
閱讀 3301·2021-09-23 11:21
閱讀 2495·2021-09-06 15:00
閱讀 1123·2019-08-30 15:44
閱讀 2024·2019-08-29 17:23
閱讀 2996·2019-08-29 16:44
閱讀 3053·2019-08-29 13:13
閱讀 1932·2019-08-28 18:12