C#二叉树递归实现

二叉树类(binaryTree.cs) using System; namespace binary_tree_demo { class BinaryTreeNode where T : IComparable { public BinaryTreeNode() { left = null; right = null; } public BinaryTreeNode(BinaryTreeNode l, BinaryTreeNode r) { left = l; right = r; } public BinaryTreeNode(T v, BinaryTreeNode l, BinaryTreeNode r) { left = l; right = r; value = v; } public BinaryTreeNode(T t) { value = t; } public BinaryTreeNode left; public BinaryTreeNode right; public T value; public void insert(T t) { T currentNodeValue = this.value; if (currentNodeValue.CompareTo(t) > 0) { if (this.left == null) { this.left = new BinaryTreeNode(t); } else { this.left.insert(t); } } else { if (this.right == null) { this.right = new BinaryTreeNode(t); } else { this.right.insert(t); } } } } } 实例程序(program.cs) using System; namespace binary_tree_demo { class Program { static void Main(string[] args) { Console.WriteLine("Here's a binarytree"); BinaryTreeNode root = new BinaryTreeNode(1, new BinaryTreeNode(2, new BinaryTreeNode(4), new BinaryTreeNode(5)), new BinaryTreeNode(3)); Console.Write("preorderTraversal:\t"); preorderTraversal(root); Console.WriteLine(); Console.Write("inorderTraversal:\t"); inorderTraversal(root); Console.WriteLine(); Console.Write("postorderTraversal:\t"); postorderTraversal(root); Console.WriteLine(); Console.WriteLine("here's another binarytree."); BinaryTreeNode root1 = new BinaryTreeNode(1); for (int i = 2; i <= 5; i++) root1.insert(i); Console.Write("preorderTraversal:\t"); preorderTraversal(root1); Console.WriteLine(); Console.Write("inorderTraversal:\t"); inorderTraversal(root1); Console.WriteLine(); Console.Write("postorderTraversal:\t"); postorderTraversal(root1); Console.WriteLine(); Console.ReadKey(); } /// /// 前序遍历 /// public static void preorderTraversal(BinaryTreeNode root) { if (root != null) { Console.Write(root.value); preorderTraversal(root.left); preorderTraversal(root.right); } } /// /// 中序遍历 /// public static void inorderTraversal(BinaryTreeNode root) { if (root != null) { inorderTraversal(root.left); Console.Write(root.value); inorderTraversal(root.right); } } /// /// 后序遍历 /// public static void postorderTraversal(BinaryTreeNode root) { if (root != null) { postorderTraversal(root.left); postorderTraversal(root.right); Console.Write(root.value); } } } }

转载于:https://www.cnblogs.com/fuis/p/3825513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值