2021-10-11 ! LeetCode226. 翻转二叉树 的前中后层序遍历写法
生活随笔
收集整理的這篇文章主要介紹了
2021-10-11 ! LeetCode226. 翻转二叉树 的前中后层序遍历写法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
還是遍歷框架的應(yīng)用
//! 二叉樹的翻轉(zhuǎn):本質(zhì)就是二叉樹的遍歷的應(yīng)用 //! 以任意形式遍歷二叉樹的每一個結(jié)點(diǎn),訪問每一個結(jié)點(diǎn)的同時調(diào)換其左右子樹 //! 中序遍歷額外注意一下調(diào)換后的參數(shù)問題 Node *BinarySearchTreesZH::invertTreePreOrder(Node *node) {if (node == nullptr){return node;}Node *tmp = node->left;node->left = node->right;node->right = tmp;invertTreePreOrder(node->left); //!這里遍歷的主要目的是遍歷過程中的副作用。即翻轉(zhuǎn)invertTreePreOrder(node->right); //! 所以這里不return,要靈活運(yùn)用遍歷框架return node; } Node *BinarySearchTreesZH::invertTreeInOrder(Node *node) {if (node == nullptr){return node;}invertTreeInOrder(node->left);Node *tmp = node->left;node->left = node->right;node->right = tmp;//! 中序遍歷的特殊點(diǎn):由于調(diào)換了左右子樹,所以第二個遞歸參數(shù)應(yīng)該是現(xiàn)在的左子樹才是原來的右子樹invertTreeInOrder(node->left);return node; } Node *BinarySearchTreesZH::invertTreePostOrder(Node *node) {if (node == nullptr){return node;}invertTreePostOrder(node->left);invertTreePostOrder(node->right);Node *tmp = node->left;node->left = node->right;node->right = tmp;return node; } Node *BinarySearchTreesZH::invertTreeLeverOrder(Node *node) {if (node == nullptr){return node;}queue<Node *> list;list.push(node);while (list.size() != 0){Node *front = list.front();list.pop();Node *tmp = front->left;front->left = front->right;front->right = tmp;if (front->left != nullptr){list.push(front->left);}if (front->right != nullptr){list.push(front->right);}}return node; }總結(jié)
以上是生活随笔為你收集整理的2021-10-11 ! LeetCode226. 翻转二叉树 的前中后层序遍历写法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-10-11 二叉树 删除结点
- 下一篇: 2021-10-11 二叉树中查找值为k