1. ?LeetCode刷題實(shí)戰(zhàn)226:翻轉(zhuǎn)二叉樹

        共 2412字,需瀏覽 5分鐘

         ·

        2021-04-01 14:00

        算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

        今天和大家聊的問題叫做 翻轉(zhuǎn)二叉樹,我們先來看題面:
        https://leetcode-cn.com/problems/invert-binary-tree/

        Given the root of a binary tree, invert the tree, and return its root.

        翻轉(zhuǎn)一棵二叉樹。

        示例


        解題


        遞歸解決

        這是一道很經(jīng)典的二叉樹問題。顯然,我們從根節(jié)點(diǎn)開始,遞歸地對(duì)樹進(jìn)行遍歷,并從葉子結(jié)點(diǎn)先開始翻轉(zhuǎn)。如果當(dāng)前遍歷到的節(jié)點(diǎn) root 的左右兩棵子樹都已經(jīng)翻轉(zhuǎn),那么我們只需要交換兩棵子樹的位置,即可完成以root 為根節(jié)點(diǎn)的整棵子樹的翻轉(zhuǎn)。

        class Solution {
        public:
            TreeNode* invertTree(TreeNode* root)
            {
                if(root ==NULL) return root;
                TreeNode* node = invertTree(root->left);
                root->left = invertTree(root->right);
                root->right = node;
                return root;
            }
        };


        迭代法

        本質(zhì)思想是,左右節(jié)點(diǎn)進(jìn)行交換,循環(huán)翻轉(zhuǎn)每個(gè)節(jié)點(diǎn)的左右子節(jié)點(diǎn),將未翻轉(zhuǎn)的子節(jié)點(diǎn)存入隊(duì)列中,循環(huán)直到棧里所有節(jié)點(diǎn)都循環(huán)交換完為止。

        public class Solution {
            public TreeNode invertTree(TreeNode root) {
                Queue<TreeNode> q = new LinkedList<TreeNode>();
                if(root!=null) q.offer(root);
                while(!q.isEmpty()){
                    TreeNode curr = q.poll();
                    TreeNode tmp = curr.right;
                    curr.right = curr.left;
                    curr.left = tmp;
                    if(curr.left!=null) q.offer(curr.left);
                    if(curr.right!=null) q.offer(curr.right);
                }
                return root;
            }
        }



        好了,今天的文章就到這里,如果覺得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

        上期推文:

        LeetCode1-220題匯總,希望對(duì)你有點(diǎn)幫助!

        LeetCode刷題實(shí)戰(zhàn)221:最大正方形

        LeetCode刷題實(shí)戰(zhàn)222:完全二叉樹的節(jié)點(diǎn)個(gè)數(shù)

        LeetCode刷題實(shí)戰(zhàn)223:矩形面積

        LeetCode刷題實(shí)戰(zhàn)224:基本計(jì)算器

        LeetCode刷題實(shí)戰(zhàn)225:用隊(duì)列實(shí)現(xiàn)棧


        瀏覽 83
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 操小逼视频 | 农村小處女破處视頻 | 四川丰满少妇被弄到高潮l | AA级黄色电影 | 中文字幕Va一区二区三区 |