1. 程式人生 > >LeetCode(47) Invert Binary Tree

LeetCode(47) Invert Binary Tree

題目描述

Invert a binary tree.
原始二叉樹 => 反轉後二叉樹

題目要求將二叉樹的左右子樹進行逆轉。

解題思路

根據題目的要求可以進行一層一層的逆轉,也就是交換結點的左右子樹。將未處理的元素放入棧中,本題的關鍵在於對於元素的入棧順序進行控制。

/**
 * 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: TreeNode* invertTree(TreeNode* root) { if(root == NULL) return NULL; TreeNode* head = root; stack<TreeNode*> nodes; nodes.push(head); while(!nodes.empty()) { TreeNode* r = nodes.top(); nodes.pop(); swap(r->left
, r->right); if(r->left != NULL) nodes.push(r->left); if(r->right != NULL) nodes.push(r->right); } return root; } };