反转二叉树
来源:互联网 发布:nginx lua function 编辑:程序博客网 时间:2024/06/06 02:33
在上篇《简单二叉树实现》的基础上实现二叉树的反转
目的
如下图
代码
- 相比之前的代码添加反转函数
//反转 public void Reversal() { reversal(ref root); Debug.Log("反转"); } private void reversal(ref binary_tree_Node node) { if(node != null){ if (node.LeftNode == null && node.RightNode == null) { return; } binary_tree_Node leftNode = node.LeftNode; node.LeftNode = node.RightNode; node.RightNode = leftNode; reversal(ref node.LeftNode); reversal(ref node.RightNode); } }
- 所有代码
using UnityEngine;using System.Collections;using System;/// <summary>/// 最简单的二叉树/// wc 2017/5/27/// </summary>public class binary_tree_Node{ public binary_tree_Node LeftNode; public binary_tree_Node RightNode; public int value; public binary_tree_Node() { }}public class binary_tree { public binary_tree_Node root; private string values = ""; //插入 public void Insert(int value) { insert(ref root,value); } private void insert(ref binary_tree_Node node, int value) { if(node == null){ node = new binary_tree_Node(); node.LeftNode = null; node.RightNode = null; node.value = value; return; } if (value <= node.value) { insert(ref node.LeftNode, value); } else if (value > node.value) { insert(ref node.RightNode, value); } } //前序遍历 public void Preorder() { values = ""; preorder(root); Debug.Log("前序遍历: " + values); } private void preorder(binary_tree_Node node) { if (node != null) { values += node.value + ","; preorder(node.LeftNode); preorder(node.RightNode); } } //中序遍历 public void Inorder() { values = ""; inorder(root); Debug.Log("中序遍历: " + values); } private void inorder(binary_tree_Node node) { if (node != null) { inorder(node.LeftNode); values += node.value + ","; inorder(node.RightNode); } } //后序遍历 public void PostOrder() { values = ""; postOrder(root); Debug.Log("后序遍历: " + values); } private void postOrder(binary_tree_Node node) { if (node != null) { postOrder(node.LeftNode); postOrder(node.RightNode); values += node.value + ","; } } //删除 public void DeleteTree() { deleteTree(ref root); Debug.Log("删除树"); } public void deleteTree(ref binary_tree_Node node) { if(node != null){ binary_tree_Node nodeLeft = node.LeftNode; binary_tree_Node nodeRight = node.RightNode; deleteTree(ref nodeLeft); deleteTree(ref nodeRight); node = null; } } //反转 public void Reversal() { reversal(ref root); Debug.Log("反转"); } private void reversal(ref binary_tree_Node node) { if(node != null){ if (node.LeftNode == null && node.RightNode == null) { return; } binary_tree_Node leftNode = node.LeftNode; node.LeftNode = node.RightNode; node.RightNode = leftNode; reversal(ref node.LeftNode); reversal(ref node.RightNode); } }}public class TestTree : MonoBehaviour{ void Start() { binary_tree tree = new binary_tree(); string rands = ""; for (int i = 0; i < 8; i++) { int random = UnityEngine.Random.Range(0, 100); tree.Insert(random); rands += random + ","; } print("原始数列: " + rands); tree.Preorder(); tree.Inorder(); tree.PostOrder(); tree.Reversal();//反转 tree.Preorder(); tree.Inorder(); tree.PostOrder(); }}
控制台输出
完
阅读全文
0 0
- 反转二叉树
- 二叉树反转
- 反转二叉树,哈哈
- 反转二叉树
- 二叉树反转
- 二叉树反转
- 二叉树--反转
- 反转二叉树
- 反转二叉树
- 反转二叉树
- 反转二叉树
- 二叉树的反转
- 反转二叉树
- LeetCode:反转二叉树
- 反转二叉树
- 反转二叉树
- 反转二叉树
- java 反转二叉树算法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- android刮刮卡效果
- 对中级 Linux 用户非常有用的 20 个命令
- 依赖和本项目的recyclerView的版本不同解决办法
- 前端打印控件lodop的相关使用问题和相关的知识领域
- 反转二叉树
- 电影《南京 南京》对于角川最后自杀的一点个人见解
- RabbitMQ与Spring整合之消息生产方
- Java 8之Lambda表达式
- windows7下tomcat环境安装
- Spring AspectJ切入点语法详解
- Effective Java读书笔记二三(Java Tips.Day.23)
- 关于jxl导出
- 【python】subprocess模块中的Popen与call的区别