본문 바로가기

Algorithm/Leet Code

LeetCode #951 FlipEquivalentBinaryTrees. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,..

LeetCode #951 FlipEquivalentBinaryTrees. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

 

 

Runtime: 0 ms, faster than 100.00% of C++ online submissions for Flip Equivalent Binary Trees.

 

Memory Usage: 11.7 MB, less than 57.14% of C++ online submissions for Flip Equivalent Binary Trees.

 

 

 

LeetCode #951

Q.

 For a binary tree T, we can define a flip operation as follows: choose any node, and swap the left and right child subtrees.

A binary tree X is flip equivalent to a binary tree Y if and only if we can make X equal to Y after some number of flip operations.

Write a function that determines whether two binary trees are flip equivalent.  The trees are given by root nodes root1 and root2.

 

 바이너리 트리 T 에서, 뒤집는 연산을 다음과 같이 정의할 수 있다 : 어느 노드를 정하고, 왼쪽과 오른쪽의 하위 트리의 자리를 교체한다.

 만약 X 와 Y 를 몇번의 뒤집는 연산을 통해서 똑같이 만들 수 있다면, 바이너리 트리 X 는 바이너리 트리 Y 와 뒤집기동등하다고 할 수 있다.

 두개의 바이너리 트리들이 뒤집기동등인지 아닌지 판별하는 함수를 써봐라. root 노드로 1, 2 가 주어진다.

 

 

Example 1:

 

Input:

root1 = [1,2,3,4,5,6,null,null,null,7,8],

root2 = [1,3,2,null,6,4,5,null,null,null,null,8,7]

 

Output: true

 

Explanation: We flipped at nodes with values 1, 3, and 5.

 

Note:

  1. Each tree will have at most 100 nodes.
  2. Each value in each tree will be a unique integer in the range [0, 99].

노트:

 1. 각 트리는 최대 100개의 노드들을 갖는다.

 2. 각 트리의 값들은 중복되지 않고 0~ 99 정수 범위 안에 있다.

 

Process (Basic concept w/o exception handling)

// Process
//1. Input two TreeNodes
//2. Do if first nodes have same value
// 2.1 Recursive compare nodes
//3. Return result

// bool RecursiveNodeCompare(node1, node2)
//1. Input TreeNodes
// 2.1. Check node1's left node val is same with node2's left or right val
//  2.1.1. If same with node2's left val -> RecursiveNodeCompare(left1, left2)
//  2.1.2. If same with node2's right val -> RecursiveNodeCompare(left1, right2)
// 2.2. Check node1's right node val is same with node2's left or right val
//  2.2.1. If same with node2's left val -> RecursiveNodeCompare(right1, left2)
//  2.2.2. If same with node2's right val -> RecursiveNodeCompare(right1, right2)
//3. Return result

 

 

// 처리과정

//1. 2개의 루트노드 입력받는다.

//2. 둘다 null 이 아니면 -> 재귀함수 호출한다.

//3. 결과 반환한다.

 

// 재귀함수

//1. 2개의 노드 입력받는다.

//2. 입력받은 2개의 노드 하위 노드값들이 같은지 확인하면서 재귀호출한다.

//3. 결과 반환한다.

 

 

Code.. lemme see example code!!!

코드.. 예제코드를 보자!!!

 

 

 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */

class Solution {
public:
	bool flipEquiv(TreeNode* root1, TreeNode* root2) {
		bool result = false;
		if (root1 != 0 && root2 != 0) {
			if (root1->val == root2->val) {
				result = RecursiveNodeCompare(root1, root2);
			}
		} else if (root1 == 0 && root2 == 0) {
            result = true;
        }
		return result;
	}

	bool RecursiveNodeCompare(TreeNode* node1, TreeNode* node2) {
		bool result = false;

		if (node1->left != 0 && node2->left != 0 && node1->right != 0 && node2->right != 0) {
			if (node1->left->val == node2->left->val) {
				if (RecursiveNodeCompare(node1->left, node2->left)) {
					if (node1->right->val == node2->right->val) {
						if (RecursiveNodeCompare(node1->right, node2->right)) {
							result = true;
						}
					}
				}
			}
			if (node1->left->val == node2->right->val) {
				if (RecursiveNodeCompare(node1->left, node2->right)) {
					if (node1->right->val == node2->left->val) {
						if (RecursiveNodeCompare(node1->right, node2->left)) {
							result = true;
						}
					}
				}
			}
		}
		else if (node1->left == 0 && node2->left == 0 && node1->right != 0 && node2->right != 0) {
			if (node1->right->val == node2->right->val) {
				if (RecursiveNodeCompare(node1->right, node2->right)) {
					result = true;
				}
			}
		}
		else if (node1->right == 0 && node2->right == 0 && node1->left != 0 && node2->left != 0) {
			if (node1->left->val == node2->left->val) {
				if (RecursiveNodeCompare(node1->left, node2->left)) {
					result = true;
				}
			}
		}
		else if (node1->left == 0 && node2->right == 0 && node1->right != 0 && node2->left != 0) {
			if (node1->right->val == node2->left->val) {
				if (RecursiveNodeCompare(node1->right, node2->left)) {
					result = true;
				}
			}
		}
		else if (node1->right == 0 && node2->left == 0 && node1->left != 0 && node2->right != 0) {
			if (node1->left->val == node2->right->val) {
				if (RecursiveNodeCompare(node1->left, node2->right)) {
					result = true;
				}
			}
		}
		else if (node1->right == 0 && node2->left == 0 && node1->left == 0 && node2->right == 0) {
			result = true;
		}
        
		return result;
	}
};

 

 

 

Something else you might like...?

 

2019/08/14 - [Life/Item review] - Mi Band 4 review, 미밴드4 후기, 장점, 단점, 리뷰, 한글, global review, 미밴드4 글로벌 후기, 리뷰, 구매, 사용방법, setting, 세팅, ProsNCons

 

2019/08/27 - [Programming] - 개발자 선배들에게서 배운 것들. Things I Learnt from a Senior Software Engineer. 코딩 잘하는 방법, how to code well, 소프트웨어,프로그래머,programmer

 

2019/08/28 - [Algorithm/Leet Code] - LeetCode #821 ShortestDistanceToACharacter. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접..

2019/08/25 - [Algorithm/Leet Code] - LeetCode #191 NumberOf1Bits. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/08/19 - [Algorithm/Leet Code] - LeetCode #942 DI StringMatch. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/07/21 - [Algorithm/Leet Code] - LeetCode #590 N-aryTreePostorderTraversal. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,..

2019/07/20 - [Algorithm/Leet Code] - LeetCode #589 N-aryTreePreorderTraversal. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,..

2019/07/17 - [Algorithm/Leet Code] - LeetCode #905 SortArrayByParity. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리..

2019/07/13 - [Algorithm/Leet Code] - LeetCode #994 RottingOranges. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/06/25 - [Algorithm/Leet Code] - LeetCode #766 ToeplitzMatrix. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/06/19 - [Algorithm/Leet Code] - LeetCode #771 JewelsAndStones. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스..

2019/06/18 - [Algorithm/Leet Code] - LeetCode #739 DailyTempertures. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리..

2019/06/15 - [Algorithm/Leet Code] - LeetCode #724 FindPivotIndex. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/06/12 - [Algorithm/Leet Code] - LeetCode #705 RelativeRanks. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

 

 

2019/04/14 - [Programming/C++] - C++ Math - sqrt (square root, 제곱근, 루트). stl, math.h, 씨쁠쁠, example code, 예제코드

 

 

2018/10/19 - [Programming/Design Pattern ] - Design pattern - Prototype (디자인패턴 - 프로토타입) / Java C++ C#

 

 

2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #60 sudoku. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #59 spiralNumbers. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/08 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #58 messageFromBinaryCode. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/07 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #57 fileNaming. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #56 digitsProduct. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #55 differentSquares. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

 

 

2018/12/28 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 - (#9, Tell, Don't Ask)

2018/12/26 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 (1)

 

 

2019/01/14 - [Programming/Java] - 자바 메모리 누수 체크/확인/고치는 방법, Memory leak check/fix in Java application, cleanCode/좋은코드/oop/객체지향

 

 

2019/02/19 - [Life/Health care] - Lysine 라이신 usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법

2019/02/16 - [Life/Health care] - Finasteride 피나스테라이드,탈모약 usage/side effects/dosage 효능/부작용/효과/sexual effect/두타스테라이드/프로페시아/propecia/finpecia/카피약/copy drug/hair loss

2019/02/25 - [Life/Health care] - Folic Acid 엽산 vitaminB9,비타민M usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법

2019/02/28 - [Life/Health care] - Vitamin K, 비타민 K usage/side effects/dosage 효능/부작용/성인,소아 용법

2019/03/03 - [Life/Health care] - Vitamin B1, Thiamine, 비타민 B1, 티아민 usage/side effects/dosage 효능/부작용/성인,소아 용법