Binary Tree Program
This commit is contained in:
		
							
								
								
									
										26
									
								
								BinaryTree/BinaryTree/.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								BinaryTree/BinaryTree/.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "version": "0.2.0",
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Use IntelliSense to find out which attributes exist for C# debugging
 | 
				
			||||||
 | 
					            // Use hover for the description of the existing attributes
 | 
				
			||||||
 | 
					            // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
 | 
				
			||||||
 | 
					            "name": ".NET Core Launch (console)",
 | 
				
			||||||
 | 
					            "type": "coreclr",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "preLaunchTask": "build",
 | 
				
			||||||
 | 
					            // If you have changed target frameworks, make sure to update the program path.
 | 
				
			||||||
 | 
					            "program": "${workspaceFolder}/bin/Debug/net5.0/BinaryTree.dll",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "cwd": "${workspaceFolder}",
 | 
				
			||||||
 | 
					            // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
 | 
				
			||||||
 | 
					            "console": "internalConsole",
 | 
				
			||||||
 | 
					            "stopAtEntry": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": ".NET Core Attach",
 | 
				
			||||||
 | 
					            "type": "coreclr",
 | 
				
			||||||
 | 
					            "request": "attach"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								BinaryTree/BinaryTree/.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								BinaryTree/BinaryTree/.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "version": "2.0.0",
 | 
				
			||||||
 | 
					    "tasks": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "label": "build",
 | 
				
			||||||
 | 
					            "command": "dotnet",
 | 
				
			||||||
 | 
					            "type": "process",
 | 
				
			||||||
 | 
					            "args": [
 | 
				
			||||||
 | 
					                "build",
 | 
				
			||||||
 | 
					                "${workspaceFolder}/BinaryTree.csproj",
 | 
				
			||||||
 | 
					                "/property:GenerateFullPaths=true",
 | 
				
			||||||
 | 
					                "/consoleloggerparameters:NoSummary"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "problemMatcher": "$msCompile"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "label": "publish",
 | 
				
			||||||
 | 
					            "command": "dotnet",
 | 
				
			||||||
 | 
					            "type": "process",
 | 
				
			||||||
 | 
					            "args": [
 | 
				
			||||||
 | 
					                "publish",
 | 
				
			||||||
 | 
					                "${workspaceFolder}/BinaryTree.csproj",
 | 
				
			||||||
 | 
					                "/property:GenerateFullPaths=true",
 | 
				
			||||||
 | 
					                "/consoleloggerparameters:NoSummary"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "problemMatcher": "$msCompile"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "label": "watch",
 | 
				
			||||||
 | 
					            "command": "dotnet",
 | 
				
			||||||
 | 
					            "type": "process",
 | 
				
			||||||
 | 
					            "args": [
 | 
				
			||||||
 | 
					                "watch",
 | 
				
			||||||
 | 
					                "run",
 | 
				
			||||||
 | 
					                "${workspaceFolder}/BinaryTree.csproj",
 | 
				
			||||||
 | 
					                "/property:GenerateFullPaths=true",
 | 
				
			||||||
 | 
					                "/consoleloggerparameters:NoSummary"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "problemMatcher": "$msCompile"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								BinaryTree/BinaryTree/BinaryTree.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								BinaryTree/BinaryTree/BinaryTree.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <OutputType>Exe</OutputType>
 | 
				
			||||||
 | 
					    <TargetFramework>net5.0</TargetFramework>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										20
									
								
								BinaryTree/BinaryTree/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								BinaryTree/BinaryTree/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace BinaryTree
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class Program
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        static void Main(string[] args)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            tree tree = new tree();
 | 
				
			||||||
 | 
					            tree.Add(5);
 | 
				
			||||||
 | 
					            tree.Add(7);
 | 
				
			||||||
 | 
					            tree.Add(6);
 | 
				
			||||||
 | 
					            tree.Add(8);
 | 
				
			||||||
 | 
					            tree.Add(3);
 | 
				
			||||||
 | 
					            tree.Add(1);
 | 
				
			||||||
 | 
					            tree.Add(4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								BinaryTree/BinaryTree/node.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								BinaryTree/BinaryTree/node.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					namespace BinaryTree
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class node
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public dynamic Data { get; set; }
 | 
				
			||||||
 | 
					        private node Parent { get; set; }
 | 
				
			||||||
 | 
					        private node Left { get; set; }
 | 
				
			||||||
 | 
					        private node Right { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public node(dynamic _Data = null,
 | 
				
			||||||
 | 
					                    node _Parent = null, 
 | 
				
			||||||
 | 
					                    node _Left = null, 
 | 
				
			||||||
 | 
					                    node _Right = null){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //New node for a Binary Tree. Values can be set to null if they are not present
 | 
				
			||||||
 | 
					            Data = _Data;
 | 
				
			||||||
 | 
					            Parent = _Parent;
 | 
				
			||||||
 | 
					            Left = _Left;
 | 
				
			||||||
 | 
					            Right = _Right;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public node GetLeft(){
 | 
				
			||||||
 | 
					            return Left;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void SetLeft(dynamic _Data, node _Parent){
 | 
				
			||||||
 | 
					            Left = new node(_Data, _Parent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public node GetRight(){
 | 
				
			||||||
 | 
					            return Right;
 | 
				
			||||||
 | 
					        }        
 | 
				
			||||||
 | 
					        public void SetRight(dynamic _Data, node _Parent){
 | 
				
			||||||
 | 
					            Right = new node(_Data, _Parent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										57
									
								
								BinaryTree/BinaryTree/tree.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								BinaryTree/BinaryTree/tree.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					namespace BinaryTree
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class tree
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public node Root { get; set; }
 | 
				
			||||||
 | 
					        private node Current { get; set; }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        public tree(dynamic _Data = null){
 | 
				
			||||||
 | 
					            //New tree - Sets the Root of the tree to a new node
 | 
				
			||||||
 | 
					            Root = new node(_Data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Add(dynamic _Data){
 | 
				
			||||||
 | 
					            //If the Root of the List is not set.
 | 
				
			||||||
 | 
					            if (Root.Data == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Root.Data = _Data;
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }else{
 | 
				
			||||||
 | 
					                Current = Root;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //traverse through the tree to the relevant point at which the item should be added
 | 
				
			||||||
 | 
					            while(true){
 | 
				
			||||||
 | 
					                var temp = Traverse(_Data, Current);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //If it is null, we are at a leaf node and we can stop traversing the tree 
 | 
				
			||||||
 | 
					                if (temp == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                Current = temp;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Check whether we need to add the node to the left or right of 
 | 
				
			||||||
 | 
					            if (_Data < Current.Data)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Current.SetLeft(_Data, Current);
 | 
				
			||||||
 | 
					            }else{
 | 
				
			||||||
 | 
					                Current.SetRight(_Data, Current);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        private node Traverse(dynamic _Data, node _Current){
 | 
				
			||||||
 | 
					            //Check whether to branch to the right or the left in the tree.
 | 
				
			||||||
 | 
					            if (_Data < _Current.Data)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return _Current.GetLeft();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return _Current.GetRight();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user