时间:2021-05-19
1。 二叉树接口
2 节点类
3.二叉树实现
package com.jimmy.impl;import java.util.Stack;import com.jimmy.BinaryTreeInterface;public class Binarytree<T> implements BinaryTreeInterface<T> { private BinaryNode<T> root; //只要一个数据节点就够了// 构造空树 public Binarytree(){ root=null; } // 用rootData构造树(有个根) public Binarytree(T rootdata){ root=new BinaryNode<T>(rootdata) ; } // 用其他树构造树 public Binarytree(T rootdata,Binarytree<T> leftTree,Binarytree<T> rightTree){ root=new BinaryNode<T>(rootdata) ; if(leftTree!=null){ root.setLeft(leftTree.root); } if(rightTree!=null){ root.setRight(rightTree.root); } }// 用rootData设置树(有个根) @Override public void setTree(T rootData) { root=new BinaryNode<T>(rootData) ; }// 用其他树设置树 public void setTree(T rootData, BinaryTreeInterface<T> left,BinaryTreeInterface<T> right) { root=new BinaryNode<T>(rootData) ; Binarytree leftTree=null; Binarytree rightTree=null; if((leftTree=(Binarytree)left)!=null){ root.setLeft(leftTree.root); } if((rightTree=(Binarytree)right)!=null){ root.setRight(rightTree.root); } } @Override public void clear() { root=null; } @Override public int getHeight() { // TODO Auto-generated method stub return root.getHeight(); } @Override public int getNumberOfRoot() { // TODO Auto-generated method stub return 0; } @Override public T getRootData() { if (root!=null) return root.getData(); else return null; } public BinaryNode<T> getRoot() { return root; } public void setRoot(BinaryNode<T> root) { this.root = root; } public int getNumOfNodes(){ return root.getNumOfNodes(); } public void inOrderTraverse(){ inOrderTraverse(root); } //用栈方法遍历public void inOrderStackTraverse(){ Stack<BinaryNode> stack=new Stack<BinaryNode>(); BinaryNode cur=root; //stack.push(root); while(!stack.isEmpty()||(cur!=null)){ while(cur!=null) { stack.push(cur); cur=cur.getLeft(); } if(!stack.isEmpty()) { BinaryNode tmp=stack.pop(); if(tmp!=null) {System.out.println(tmp.getData()); cur=tmp.getRight(); } } }}// 递归遍历public void inOrderTraverse(BinaryNode<T> node){ if(node!=null) {inOrderTraverse(node.getLeft()); System.out.println(node.getData()); inOrderTraverse(node.getRight()); } }public static void main(String[] args) {Binarytree<String> t=new Binarytree<String>();Binarytree<String> t8=new Binarytree<String>("8");Binarytree<String> t7=new Binarytree<String>("7");t.setTree("6",t7,t8); //用t7,t8设置树tt.inOrderStackTraverse();System.out.println(t.getHeight());}}通过此文,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
树是一种重要的非线性数据结构,二叉树是树型结构的一种重要类型。本学年论文介绍了二叉树的定义,二叉树的存储结构,二叉树的相关术语,以此引入二叉树这一概念,为展开二
写在最前面:带你从最简单的二叉树构造开始,深入理解二叉树的数据结构,ps:不会数据结构的程序猿只能是三流的首先,我们构造一个二叉树这是最标准,也是最简单的二叉树
二叉树是一种非常重要的数据结构。本文总结了二叉树的常见操作:二叉树的构建,查找,删除,二叉树的遍历(包括前序遍历、中序遍历、后序遍历、层次遍历),二叉搜索树的构
一、获取二叉树的深度就是二叉树最后的层次,如下图:实现代码:复制代码代码如下:defgetheight(self):'''获取二叉树深度'''returnsel
本文实例讲述了JavaScript数据结构与算法之二叉树插入节点、生成二叉树。分享给大家供大家参考,具体如下:javascript数据结构与算法--插入节点、生