두 갈래 트리에서 루트 노드를 지정된 노드에 인쇄하는 경로 - 뒤따라 흐르는 변형 해답

1125 단어 면접&필기시험
제목: 두 갈래 트리에서 루트 노드를 지정된 노드로 인쇄하는 경로
이 유형의 제목은 위나 두 개의 지정된 노드의 가장 짧은 경로를 찾으려면 일률적으로 두 갈래 나무로 사상을 옮겨야 한다.
이 문제의 해답은 바로 뒷차례가 반복되는 개선에 쓰인다.
두 갈래 트리에서 두 개의 지정된 노드의 가장 짧은 경로를 인쇄하려면 중간 순서로 옮겨야 합니다.본론으로 돌아가다.
이 문제 코드 구현:
#include
#include

using namespace std;

struct TreeNode {
	int val;
	TreeNode* left, *right;
	TreeNode(int x):val(x),left(nullptr),right(nullptr){}
};
vector res;
void advPostOrder(TreeNode* root,TreeNode* node) {
	if (!root)// 
		return;
	if (root == node) {// 
		res.push_back(node);
		return;
	}
	if (root->left)
		advPostOrder(root->left, node);
	if (root->right)
		advPostOrder(root->right, node);
    // , , 
	if (!res.empty()&&(root->left==res.back()||root->right==res.back()))
		res.push_back(root);
}

int main() {
	TreeNode a(1), b(2), c(3), d(4), e(5), f(6), g(7), h(8), i(9);
	a.left = &b;
	a.right = &c;
	b.left = &d;
	b.right = &e;
	d.left = &f;
	d.right = &g;
	e.left = &h;
	e.right = &i;
	advPostOrder(&a, &i);
	return 0;
}

좋은 웹페이지 즐겨찾기