[JAVA] Tree

이진규·2025년 4월 9일
0

자바

목록 보기
4/6
post-thumbnail

💡 Tree
계층적인 구조를 나타내는 비선형 자료구조로 그래프(Graph)의 특수한 형태
트리는 노드(Node)와 간선(Edge)으로 이루어짐

✅ 구현

static class Node {
		Object data;
		Node left;
		Node right;

		Node(Object data) {
			this.data = data;
			this.left = null;
			this.right = null;
		}

		Object getLeft() {
			return this.left;
		}

		Object getRight() {
			return this.right;
		}

		void setLeft(Node newNode) {
			this.left = newNode;
		}

		void setRight(Node newNode) {
			this.right = newNode;
		}
        
        void addData(Node node, String parent, String left, String right) {
			if (node == null)
				return;
			if (node.data.equals(parent)) {
				if (!left.equals(".")) {
					node.setLeft(new Node(left));
				}
				if (!right.equals(".")) {
					node.setRight(new Node(right));
				}
			}

			else {
				addData(node.left, parent, left, right);
				addData(node.right, parent, left, right);
			}
		}
        
        // 🔥 전위순회 : root > left > right
        private static void preOrder(Node node) {
            if (node == null)
                return;

            pre.append(node.data);
            preOrder(node.left);
            preOrder(node.right);
        }

        // 🔥 중위선회 : left > root > right
        private static void inOrder(Node node) {
            if (node == null)
                return;

            inOrder(node.left);
            in.append(node.data);
            inOrder(node.right);
        }

        // 🔥 후위순회 : left > right > root
        private static void postOrder(Node node) {
            if (node == null)
                return;

            postOrder(node.left);
            postOrder(node.right);
            post.append(node.data);
        }

	}
profile
웹 개발자

0개의 댓글