操作給定的二叉樹,將其變換為源二叉樹的鏡像
1 class Solution { 2 public: 3 void Mirror(TreeNode *pRoot) { 4 if(pRoot==NULL){ 5 return; 6 } 7 if(pRoot -> left==NULL&&pRoot ->right==NULL){ 8 return; 9 } 10 TreeNode *temp = pRoot -> left; 11 pRoot -> left = pRoot -> right;12 pRoot -> right = temp; 13 if(pRoot -> left!=NULL){ 14 Mirror(pRoot -> left); 15 } 16 if(pRoot -> right!=NULL){ 17 Mirror(pRoot -> right); 18 } 19 } 20 };
操作給定的二叉樹,將其變換為源二叉樹的鏡像
相關推薦
操作給定的二叉樹,將其變換為源二叉樹的鏡像
pos turn amp 變換 temp null treenode != nbsp 1 class Solution { 2 public: 3 void Mirror(TreeNode *pRoot) { 4 if(pRoot==NUL
【劍指Offer】操作給定的二叉樹,將其變換為源二叉樹的鏡像。
right 鏡像 tree style turn val 交換 實現 oot 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 鏡像二叉樹 8
操作給定的二叉樹,將其變換為源二叉樹的映象。
public class Solution { public void Mirror(TreeNode root) {
【劍指offer】給定一個二叉樹,將其變換為源二叉樹的映象
題目要求 給定一個二叉樹,將其變換為源二叉樹的映象。 核心思想 遞迴思想,分治呼叫。 完整程式碼如下 public class Solution { public class TreeNode { int val; TreeNode left; TreeNo
輸入一個8位二進位制數,將其轉化為十進位制數輸出
#include<iostream> using namespace std; double power(double x,int n) { double val=1.0; while(n--) val*=x; return val; } int main(
組合語言學習之路(7)------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出
data segment inf1 db "please input a number(1-361):$" ibuf db 7,0,6 dup(0) obuf db 6 dup(0) data ends c
輸入一個數,將其轉化為二進位制輸出
解題思路: 十進位制轉二進位制方法,對2求餘,最後將餘數逆序輸出 #include<stdio.h> int main() { int num,a[20],i=0; printf("Input a number:");
大一上C語言期末複習:輸入一個正整數,將其分解為質因數,如90=2*3*3*5
//輸入一個正整數,將其分解為質因數,如90=2*3*3*5 #include <stdio.h> int main() { int n,i; while(scanf("%d",&n)) { if(n==1) { printf("n=
LeetCode 給定一個 N 叉樹,找到其最大深度。 最大深度是指從根節點到最遠葉子節點的最長路徑上的節點總數
/* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {}  
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列(劍指offer)
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 分析: 在二叉搜尋樹中,每個結點都有兩個分別指向其左、右子樹的指標,左子樹結點的值總是小於父結點的值,右子樹結點的值總是大於父結點的值。在雙向連結串列中,每個結點
給定一棵二叉樹,和一個數值。求二叉樹的路徑和等於給定值的所有路徑
判斷是否有路徑 bool hasPathSum(TreeNode *root, int sum) { if(root==NULL) return false; sum-=root->val;
java 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 比如將二元查詢樹
構造一顆二叉樹,輸出其先序遍歷,後序遍歷,中序遍歷
#include <stdio.h>#include <stdlib.h>#define OVERFLOW 0 typedef struct Node { char data; struct Node *lchild,*rchild;
牛客原題 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {
CF E. Vasya and a Tree】 dfs+樹狀陣列(給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值)
題意: 給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值 首先要明確兩件事情性質1.每個人的操作只會影響到他的子孫(包括自己) 性質1.每個人的操
劍指offer32(1,2,3)--從上往下列印二叉樹,分行從上往下列印二叉樹,按之字形順序列印二叉樹
從上往下列印二叉樹 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路: 層序遍歷,用到佇列 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;
判斷一個節點是否在二叉樹中,判斷tree2是否為tree1的子樹
1、判斷一個節點是否在一棵二叉樹中。 先判斷根節點,遞迴判斷左子樹,遞迴判斷右子樹。 2、判斷一顆二叉樹是是否是另一顆樹的子樹。比如tree2是tree1的子樹。 先判斷根,根相同再判斷左右子樹如果所有的都相同,則此樹是
給定一個m×n矩陣,如果一個元素為0,則將其整行和列的值設定為0.
本題源自LeetCode -------------------------------------------------- 思路1 遍歷整個陣列,遇到0 就把整行和整列不為0 的值置為* ,然後再次遍歷陣列把* 換為0 void setZeroes(vector&
給定一個正整數n,將其分成m段,每段為n1,n2,...,nm,求怎麼劃分使得n1*n2*...*nm最大
#include <iostream> #include <fstream> #include <math.h> using namespace std; #define SIZE 1000 unsigned long m[SIZE], t[SIZE]; //m
Morris神級遍歷二叉樹,時間複雜度為O(1)
Morris演算法介紹 Morris演算法在遍歷的時候避免使用了棧結構,而是讓下層到上層有指標,具體是通過底層節點指向NULL的空閒指標返回上層的某個節點,從而完成下層到上層的移動。我們知道二叉樹有很多空閒的指標,比如某個人節點沒有右孩子,我們稱這種情況為空閒