fix(learn): Added solution for invert binary tree data structures challenge (#35922)
* fix: add solution for invert binary tree * Fixed errors * Used 2 spaces per request * deleted images * Update guide/english/certifications/coding-interview-prep/data-structures/invert-a-binary-tree/index.md Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * Update guide/english/certifications/coding-interview-prep/data-structures/invert-a-binary-tree/index.md Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * Update guide/english/certifications/coding-interview-prep/data-structures/invert-a-binary-tree/index.md Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * Update guide/english/certifications/coding-interview-prep/data-structures/invert-a-binary-tree/index.md Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * fix: added extra line to avoid linting errors
This commit is contained in:
parent
6f4a9ed721
commit
a13d116aab
@ -39,14 +39,14 @@ tests:
|
||||
```js
|
||||
var displayTree = (tree) => console.log(JSON.stringify(tree, null, 2));
|
||||
function Node(value) {
|
||||
this.value = value;
|
||||
this.left = null;
|
||||
this.right = null;
|
||||
this.value = value;
|
||||
this.left = null;
|
||||
this.right = null;
|
||||
}
|
||||
function BinarySearchTree() {
|
||||
this.root = null;
|
||||
// change code below this line
|
||||
// change code above this line
|
||||
this.root = null;
|
||||
// change code below this line
|
||||
// change code above this line
|
||||
}
|
||||
```
|
||||
|
||||
@ -114,6 +114,28 @@ BinarySearchTree.prototype = {
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
var displayTree = (tree) => console.log(JSON.stringify(tree, null, 2));
|
||||
function Node(value) {
|
||||
this.value = value;
|
||||
this.left = null;
|
||||
this.right = null;
|
||||
}
|
||||
function BinarySearchTree() {
|
||||
this.root = null;
|
||||
// change code below this line
|
||||
this.invert = function(node = this.root) {
|
||||
if (node) {
|
||||
const temp = node.left;
|
||||
node.left = node.right;
|
||||
node.right = temp;
|
||||
this.invert(node.left);
|
||||
this.invert(node.right);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
// change code above this line
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@ -3,8 +3,57 @@ title: Invert a Binary Tree
|
||||
---
|
||||
## Invert a Binary Tree
|
||||
|
||||
This is a stub. <a href='https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/coding-interview-prep/data-structures/invert-a-binary-tree/index.md' target='_blank' rel='nofollow'>Help our community expand it</a>.
|
||||
|
||||
<a href='https://github.com/freecodecamp/guides/blob/master/README.md' target='_blank' rel='nofollow'>This quick style guide will help ensure your pull request gets accepted</a>.
|
||||
|
||||
<!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds -->
|
||||
## Hint: 1
|
||||
|
||||
Create a invert(node = this.root) method in the BinarySearchTree constructor function.
|
||||
|
||||
> _try to solve the problem now_
|
||||
|
||||
|
||||
## Hint: 2
|
||||
|
||||
Try to use recursion and think of a base case.
|
||||
|
||||
> _try to solve the problem now_
|
||||
|
||||
|
||||
## Spoiler Alert!
|
||||
|
||||
**Solution ahead!**
|
||||
|
||||
|
||||
## Basic Code Solution:
|
||||
|
||||
```js
|
||||
var displayTree = (tree) => console.log(JSON.stringify(tree, null, 2));
|
||||
function Node(value) {
|
||||
this.value = value;
|
||||
this.left = null;
|
||||
this.right = null;
|
||||
}
|
||||
function BinarySearchTree() {
|
||||
this.root = null;
|
||||
// change code below this line
|
||||
this.invert = function(node = this.root) {
|
||||
if (node) {
|
||||
const temp = node.left;
|
||||
node.left = node.right;
|
||||
node.right = temp;
|
||||
this.invert(node.left);
|
||||
this.invert(node.right);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
// change code above this line
|
||||
}
|
||||
```
|
||||
|
||||
<a href='https://repl.it/repls/SereneScholarlyAnalyst' target='_blank' rel='nofollow'>Run Code</a>
|
||||
### Code Explanation:
|
||||
* Using recursion will allow you to traverse each node once and the only extra memory used is the auxiliary temp variable that enables you to swap. You keep swapping the left and right pointers of a node until you reach the leaves which will not do anything as the left and right of them are null references.
|
||||
## NOTES FOR CONTRIBUTIONS:
|
||||
**DO NOT** add solutions that are similar to any existing solutions. If you think it is **_similar but better_**, then try to merge (or replace) the existing similar solution.
|
||||
* Add an explanation of your solution.
|
||||
* Categorize the solution in one of the following categories — **Basic**, **Intermediate** and **Advanced**.
|
||||
|
Loading…
x
Reference in New Issue
Block a user