1. 二叉树的先序遍历 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BinaryTree { public interface IBinaryTree<T> { IBinaryTree<T> Left { get; } IBinaryTree<T> Right { get; } T Data { get; } } public static class BinaryTreeNodeCounter { public static int CountNodesRecursively<T>(this IBinaryTree<T> tree) { int BnCount = 0; if (tree == null) return 0; Console.Write("{0} ", tree.Data); BnCount++; BnCount = BnCount + CountNodesRecursively<T>(tree.Left); BnCount = BnCount +CountNodesRecursively<T>(tree.Right); return BnCount; } } class TreeNode<T> : IBinaryTree<T> { private T data; private TreeNode<T> left; private TreeNode<T> right; public TreeNode(T _data,TreeNode<T> _left,TreeNode<T> _right) { data = _data; left = _left; right = _right; } public IBinaryTree<T> Left { get { return left; } } public IBinaryTree<T> Right { get { return right; } } public T Data { get { return data; } } } class Program { static void Main(string[] args) { TreeNode<string> nodeF = new TreeNode<string>("F", null, null); TreeNode<string> nodeE = new TreeNode<string>("E", null, nodeF); TreeNode<string> nodeD = new TreeNode<string>("D", null, null); TreeNode<string> nodeC = new TreeNode<string>("C", null, null); TreeNode<string> nodeB = new TreeNode<string>("B", nodeD, nodeE); TreeNode<string> nodeA = new TreeNode<string>("A", nodeB, nodeC); int k = BinaryTreeNodeCounter.CountNodesRecursively<string>(nodeA); Console.WriteLine("\n{0}",k); Console.ReadLine(); } } }
输出:

2. 链表的冒泡排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Link { public interface Link { int Data{get;set;} Link Next { get;set;} } public class LinkClass : Link { private int data; private Link next; public LinkClass(int _data,Link _next) { data = _data; next = _next; } public int Data { get { return data; } set { data = value; } } public Link Next { get { return next; } set { next = value; } } } public class LinkSort { public static Link SortLink(Link head) { try { int linkLength = 0; Link p = head; if (p == null) return null; while (p!=null) { linkLength++; p = p.Next; } p = head; for (int i = 0; i < linkLength; i++) { p = head; for (int j= 0; j < linkLength-i-1; j++) { if (p.Data > p.Next.Data) { int temp = p.Data; p.Data = p.Next.Data; p.Next.Data = temp; } p = p.Next; } } Console.WriteLine("\n链表长度:{0}", linkLength); } catch { } return head; } } class Program { static void Main(string[] args) { LinkClass lc1 = new LinkClass(20,null); LinkClass lc2 = new LinkClass(12, lc1); LinkClass lc3 = new LinkClass(2, lc2); LinkClass lc4 = new LinkClass(0, lc3); LinkClass lc5 = new LinkClass(96, lc4); LinkClass lc6 = new LinkClass(24, lc5); LinkClass lc7 = new LinkClass(13, lc6); LinkClass lc8 = new LinkClass(1, lc7); LinkClass lc9 = new LinkClass(65, lc8); LinkClass lc10 = new LinkClass(34, lc9); Link p = lc10; while (p != null) { Console.Write("{0} ", p.Data); p = p.Next; } LinkSort.SortLink(lc10); Console.Write("\n"); Link q = lc10; while (q != null) { Console.Write("{0} ", q.Data); q = q.Next; } Console.ReadLine(); } } }

原文:http://www.cnblogs.com/zzunstu/p/3564528.html