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