摘要:泛型简易实现根节点二叉树的节点节点的值左右孩子节点先序遍历方法用于测试二叉查找树插入二叉树的节点节点的值左右孩子节点根节点插入节点先序遍历方法用于测试先序遍历迭代器
泛型简易实现
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 } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64129.html
摘要:本篇主要介绍二叉树的概念二叉树的表示二叉树的操作三种遍历方式实现求二叉树的子树求节点的父节点二叉树高度,可能是考试中的,也可能是面试中的。通常二叉树的遍历根据根节点的遍历次序分为先根遍历中根遍历后根遍历。 声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。本篇主要介绍二叉树的概念、二叉树的表示、二叉树的操作(三种遍历...
摘要:是栈,它继承于。满二叉树除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。没有键值相等的节点。这是数据库选用树的最主要原因。 在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫)。所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以及面试的相关知识。本来是想通过Gitbook的...
阅读 2424·2021-09-29 09:34
阅读 3256·2021-09-23 11:21
阅读 2455·2021-09-06 15:00
阅读 1094·2019-08-30 15:44
阅读 1995·2019-08-29 17:23
阅读 2949·2019-08-29 16:44
阅读 3016·2019-08-29 13:13
阅读 1902·2019-08-28 18:12