本文主要是介绍数据结构(七)——树结构(Tree) 之二叉树的常用操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.链式存储的二叉树的操作
1.遍历二叉树
- 先序遍历:根-->左-->右
- 中序遍历:左-->根-->右
- 后序遍历:左-->右-->根
- 层级遍历:逐层从左到输出
2.二叉树结点的查找
结点的查找也可以分为先序查找,中序查找和后序查找。方式和遍历方式相似。
3.删除二叉树结点
- 二叉树抽象类代码
package cn.kimtian.tree;/*** 链式存储的二叉树** @author kimtian*/
public class BinaryTree {/*** 根结点*/TreeNode root;/*** 设置根结点** @param root 根结点*/public void setRoot(TreeNode root) {this.root = root;}/*** 获取根结点** @return TreeNode 根结点*/public TreeNode getRoot() {return root;}/*** 先序遍历*/public void frontShow() {if (root != null) {root.frontShow();}}/*** 中序遍历*/public void middleShow() {if (root != null) {root.middleShow();}}/*** 后序遍历*/public void behindShow() {if (root != null) {root.behindShow();}}/*** 查找二叉树的结点--先序查找** @param i 查找的结点的值*/public TreeNode frontSearch(int i) {return root.frontSearch(i);}/*** 查找二叉树的结点--中序查找** @param i 查找的结点的值*/public TreeNode middleSearch(int i) {return root.middleSearch(i);}/*** 查找二叉树的结点--后序查找** @param i 查找的结点的值*/public TreeNode behindSearch(int i) {return root.behindSearch(i);}/*** 删除二叉树的结点/子树** @param i 查找的结点的值*/public void deleteTreeNode(int i) {if (root.value == i) {root = null;} else {root.deleteTreeNode(i);}}
}
- 二叉树的结点
package cn.kimtian.tree;/*** 树里面的结点** @author kimtian*/
public class TreeNode {/*** 树里面的值,结点的权*/int value;/*** 左儿子*/TreeNode leftNode;/*** 右儿子*/TreeNode rightNode;public TreeNode(int value) {this.value = value;}public void setLeftNode(TreeNode leftNode) {this.leftNode = leftNode;}public void setRightNode(TreeNode rightNode) {this.rightNode = rightNode;}/*** 先序遍历--递归思想*/public
这篇关于数据结构(七)——树结构(Tree) 之二叉树的常用操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!